2010-03-31 54 views
6

Tôi đang cố gửi một email cơ bản qua Google Apps/Gmail bằng C# (System.Net.Mail/Framework 4) và tôi đang gặp sự cố khi làm như vậy.Gửi Email qua Google Apps tại C#

Tôi nhận được ngoại lệ sau: "Thao tác đã hết thời gian".

Mã của tôi là dưới đây:

  //Create the mail message 
      MailMessage mail = new MailMessage(); 

      //Set the addresses 
      mail.From = new MailAddress("[email protected]", "My Name"); 
      mail.To.Add(Email); 

      //Set the subject and bodycontent 
      mail.Subject = "Email Testing"; 
      mail.Body = "This is the body of the email"; 

      //Send the message using the SmtpClient 
      SmtpClient smtp = new SmtpClient(); 
      smtp.EnableSsl = true; 
      smtp.Send(mail); 

web.config của tôi có các cài đặt sau:

 <smtp from="[email protected]" deliveryMethod="Network"> 
      <network host="smtp.gmail.com" 
       userName="[email protected]" 
       password="password" 
       port="587" /> 
     </smtp> 

Trong xử lý sự cố của tôi, tôi đã cố gắng:

  • Sử dụng địa chỉ gmail cá nhân của tôi cũng như một tên miền khác từ miền được lưu trữ thông qua Google Apps.
  • Sử dụng cổng 25, 465, và 587
  • cứng mã hóa các thiết lập cấu hình trong các mã C# thay vì sử dụng web.config
  • Gửi và telneting từ nhiều địa điểm mạng để đảm bảo các bức tường lửa/ISP đã không chặn nó
  • Đảm bảo rằng POP đã được bật trong cài đặt GMail (theo Google điều này sẽ bật khả năng gửi bằng SMTP)
  • Thay đổi gửi và trả lờiĐịa chỉ để đảm bảo khớp với tài khoản (rõ ràng là cần thiết GMail).

Tôi có thể gửi và nhận email tốt thông qua giao diện Gmail cho cả hai tài khoản email của tôi. Tôi cũng đã thử cài đặt và giải pháp được cung cấp trong Câu hỏi # 757987 không có kết quả.

+0

Có ai đã làm việc này gần đây với Gmail không? Tôi nghĩ rằng Google đã thay đổi một số cài đặt bảo mật gần đây và điều này đang gây ra các triệu chứng của tôi. – NateReid

Trả lời

1

Mã của bạn có vẻ ổn. Bạn nói bạn đã thử Telneting. Bạn có thực sự có thể gửi email qua telnet không?

Bạn có thể thử gỡ bỏ

from="[email protected]" deliveryMethod="Network" 

từ thẻ smtp của bạn vì chúng là không cần thiết cho những gì bạn đang làm.

EDIT:

Telnet thường sẽ cho phép bạn kết nối với server smtp và gửi 16 byte dữ liệu trước khi nó sẽ đá bạn ra (?). Nếu bạn không nhận được phản hồi như these, thì đây có thể là trường hợp.

Thử mở cổng 587 trên tường lửa của bạn và xem liệu bạn có thực sự tương tác với máy chủ SMTP thông qua telnet (EHLO, ECHO, v.v.) hay không.

+0

Cảm ơn bạn đã đề xuất. Tôi đã thử loại bỏ "từ" và "deliverymethod" từ thẻ smtp và nó vẫn là thời gian ra ngoài. Khi tôi đề cập đến tôi đã cố gắng telneting trong câu hỏi ban đầu của tôi ... Tôi đã thử kết nối và nó kết nối, nhưng khi tôi cố gắng gửi một email bằng cách sử dụng các hướng dẫn tôi tìm thấy tại "http://www.wikihow.com/Send-Email -Sử dụng-Telnet "nó đá tôi ra sau khi lệnh đầu tiên. – NateReid

+1

Âm thanh như telnet của bạn không thực sự được kết nối sau đó, trong trường hợp đó bạn có thể gặp sự cố mạng.Hãy thử mở cổng 587 trên tường lửa của bạn – Joel

+0

Đó là những gì tôi nghĩ nhưng theo http://mail.google.com/support/bin/answer.py?hl=vi&answer=78775 trang này từ google trên email gỡ rối (cụ thể là điểm đạn cuối cùng), tôi được kết nối. – NateReid

Các vấn đề liên quan