2009-01-14 11 views
5

Tôi có thể gửi email bằng cách sử dụng mã C# SMTP điển hình trên Exchange 2007 miễn là cả từ và đến địa chỉ nằm trong miền của tôi.Làm cách nào để gửi email bên ngoài miền của mình với Exchange 2007 và C#

Ngay sau khi tôi cố gắng để gửi email bên ngoài lĩnh vực tôi nhận được:

Ngoại lệ chi tiết: System.Net.Mail.SmtpFailedRecipientException: Mailbox không có. Phản hồi của máy chủ là: 5.7.1 Không thể chuyển tiếp

Làm cách nào để tôi có thể trao đổi để chấp nhận email của tôi và gửi nó ra internet?

Trả lời

8

Thử # 2 ... Thay vào đó, cách sử dụng một số Exchange Pickup Folder? Họ là một cách nhanh hơn để gửi email thông qua Exchange vì nó chỉ tạo email và thả nó trong thư mục, không phải đợi để kết nối với máy chủ hoặc chờ trả lời. Plus tôi nghĩ rằng nó bỏ qua toàn bộ vấn đề tiếp sức.

Configure SmtpClient youur như vậy:

SmtpClient srv = new SmtpClient("exchsrv2007", 25) { 
    DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory, 
    PickupDirectoryLocation = "\\exchsrv2007\PickupFolder" 
} 
... 
+0

Hầu như ở đó ... nhưng bạn có thể truy cập đường dẫn mạng như vậy không? – jmcd

+0

Không theo mặc định, đường dẫn mạng sẽ cần được chia sẻ và quá trình ASP .NET đang chạy như (hoặc mạo danh) sẽ cần quyền truy cập vào thư mục – DavGarcia

+0

+1 cho giải pháp tiết kiệm thời gian như vậy. – Mozy

1

Bạn cần phải nhờ quản trị viên trao đổi của mình định cấu hình trao đổi để cho phép gửi bên ngoài miền. Theo kinh nghiệm của tôi, họ đã miễn cưỡng làm như vậy vì những mối quan tâm về spam.

Nếu nó 'để sử dụng hạn chế, bạn có thể thiết lập quy tắc phía máy chủ để đổi lấy thư chuyển tiếp đáp ứng các tiêu chí nhất định bên ngoài miền. Bạn có thể có thể sử dụng VBA trong những điều này cũng như những thứ đẹp lên, nhưng tôi không chắc chắn.

+0

+1 Thông thường các tập đoàn lớn có nhiều máy chủ trao đổi và ít nhất ai được phép để chuyển tiếp email bên ngoài tên miền. – scottm

+0

Bạn có thể nói phần lớn trải nghiệm của tôi với Exchange là với các công ty nhỏ hơn không: D – AlexCuse

6

Xác thực cho máy chủ trao đổi.

http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.credentials.aspx


DefaultNetworkCredentials trả chuỗi rỗng cho tên người dùng vv và nguyên nhân ngoại lệ này ...

Dưới đây là một example, và đây là another gửi xác nhận thông điệp với System.Net.Mail.

+0

Tôi không biết bạn có thể làm việc theo cách này! Cảm ơn :) – AlexCuse

+0

DefaultNetworkCredentials trả về các chuỗi trống cho tên người dùng vv và gây ra ngoại lệ này: Mailbox không khả dụng. Phản hồi của máy chủ là: 5.7.1 Máy khách không có quyền gửi như người gửi này – jmcd

+0

+1 'client.Credentials = CredentialCache.DefaultNetworkCredentials;' giải quyết vấn đề chuyển tiếp của tôi. Chuyển tiếp tốt bằng cách sử dụng này. –

0

Bạn đã thiết lập máy chủ trao đổi thành allow relays từ máy chủ web của mình chưa? Tôi gặp vấn đề tương tự khi chuyển sang Exchange 2007.

+0

Tôi đã theo dõi tác phẩm này và nó không tạo ra bất kỳ sự khác biệt nào: ( – jmcd