2009-09-01 48 views
6

Tôi có một ứng dụng ASP.NET được lưu trữ trên Godaddy mà tôi muốn gửi email từ. Khi nó chạy, tôi nhận được: Tên hộp thư không được phép. Phản hồi của máy chủ là: xin lỗi, chuyển tiếp bị từ chối từ vị trí của bạn. Các bộ phận quan trọng của mã và Web.config dưới:Không thể gửi email trong ASP.NET thông qua các máy chủ Godaddy

msg = new MailMessage("[email protected]", email); 
     msg.Subject = "GreekTools Registration"; 
     msg.Body = 
      "You have been invited by your organization to register for the GreekTools recruitment application.<br/><br/>" + 
      url + "<br/><br/>" + 
      "Sincerely,<br/>" + 
      "The GreekTools Team"; 

     msg.IsBodyHtml = true; 

     client = new SmtpClient(); 
     client.Host = "relay-hosting.secureserver.net"; 

     client.Send(msg); 

<system.net> 
<mailSettings> 
    <smtp from="[email protected]"> 
    <network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" /> 
    </smtp> 
</mailSettings> 

Trả lời

17

1- Nếu trang web của bạn được lưu trữ trên godaddy, bạn có thể sử dụng "relay-hosting.secureserver.net" không có bằng chứng xác thực.

2- Nếu trang web của bạn được lưu trữ bên ngoài godaddy bạn có thể sử dụng "smtpout.secureserver.net" với thông tin đăng nhập tài khoản email của bạn.

PS: Vui lòng thay đổi cổng 3535 nếu bạn có vấn đề với 25

Hosted On GoDaddy

<system.net> 
     <mailSettings> 
     <smtp from="[email protected]"> 
     <network host="relay-hosting.secureserver.net"/> 
     </smtp> 
     </mailSettings> 
    </system.net> 

ngoài

<system.net> 
    <mailSettings> 
     <smtp from="[email protected]"> 
     <network host="smtpout.secureserver.net" 
      userName="[email protected]" password="your_password_here" 
      port="25" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 
+0

Tôi gặp sự cố khi sử dụng 'relay-hosting.secureserver.net' làm' smtpClient.Host'. Đôi khi phải mất một thời gian dài để gửi, và những người khác nó sẽ gửi ở tất cả ném một ngoại lệ: "Tên hộp thư không được phép. Phản ứng của máy chủ là: xin lỗi, chuyển tiếp bị từ chối từ vị trí của bạn". Thay đổi máy chủ của tôi thành 'smptout.secureserver.net' đã giải quyết vấn đề này và cho phép thư được gửi trong vài giây. Cảm ơn bạn rất nhiều: D +1 –

+0

godaddy đã thực hiện một số thay đổi với cơ sở hạ tầng email của họ. Bạn có thể tạo tài khoản email của mình ở các trung tâm dữ liệu khác nhau. để bạn có thể chọn máy chủ Mỹ, châu Âu hoặc châu Á. Vì lý do đó bạn cần sử dụng một máy chủ smtp cho khu vực của bạn. như "smtpout.europe.secureserver.net" –

+0

Vấn đề của tôi là cổng 25. Cảm ơn rất nhiều vì đã đề xuất cổng 3535. Làm việc như một sự quyến rũ! – curiousBoy

0

Đây có thể là một câu trả lời từ máy chủ SMTP vì máy cố gắng gửi email đó vẫn chưa được trong danh sách trắng (hoặc là danh sách đen cho RAC). Là relay-hosting.secureserver.net một máy chủ GoDaddy, hoặc là nó trên một mạng khác nhau? Bạn có thể muốn tìm một máy chủ GoDaddy cho phép chuyển tiếp email. Tôi sẽ tưởng tượng rất nhiều nhà cung cấp lưu trữ được chia sẻ có những hạn chế ngày hôm nay.

Tôi sẽ tìm ra loại máy chủ SMTP bạn đang sử dụng và các biện pháp chống spam nào được áp dụng. Quản trị viên có thể thêm máy chủ GoDaddy vào danh sách trắng các máy chủ được phép. Bạn cần phải rất cẩn thận và chắc chắn rằng ứng dụng của bạn không thể được sử dụng như một proxy cho một spammer. Đảm bảo xác thực tất cả đầu vào để đảm bảo nó được an toàn.

+0

relay-hosting.secureserver.net là máy chủ chuyển tiếp smtp của GoDaddy. – Jared

0

Kiểm tra tên máy chủ của bạn. Bạn có chắc chắn tài khoản của bạn không được cấu hình để sử dụng mail.greektools.net? Đó là định dạng mặc định cho GoDaddy webhosting ..

+0

Tôi đã cố gắng thay đổi nó thành mail.greektools.net và tôi có một ngoại lệ "không gửi" chung (hoặc một cái gì đó như thế). – Jared

0

thiết

defaultCredentials="false" 

trong phần tử mạng của bạn

 <network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" defaultCredentials="false" /> 
0

Just cho một thử nghiệm. Xóa các giá trị tên người dùng và mật khẩu khỏi web.config.

Sau đó, trong mã của bạn thiết lập

//call this line, before you call .Send 
client.Credentials = CredentialCache.DefaultNetworkCredentials; 
client.Send(msg) 
0

Tôi chỉ hỏi GoDaddy, làm thế nào để thiết lập một bưu phẩm hình thức SMTP, và họ nói với tôi rằng tôi cần phải sử dụng một Relay Server, không có Tên truy nhập, không có mật khẩu và không có cổng. Tên máy chủ để sử dụng là, cùng tên mà bạn đã sử dụng.

2

Đây là lớp học của tôi email:

public class Email 
{ 
    public enum MailAddressType 
    { 
     From = 1, 
     Bcc 
    } 

    private static MailAddress _from = null; 

    public static void SendEmail(string to, string subject, string body) 
    { 
     SendEmail(to, subject, body, From, string.Empty); 
    } 

    public static void SendEmail(string to, string subject, string body, string from) 
    { 
     SendEmail(to, subject, body, from, MailAddressType.From); 
    } 

    public static void SendEmail(string to, string subject, string body, string addresses, MailAddressType addressType) 
    { 
     MailAddress from = From; 
     string bcc = string.Empty; 

     if (MailAddressType.From == addressType) 
     { 
      from = new MailAddress(addresses); 
     } 
     else 
     { 
      bcc = addresses; 
     } 

     SendEmail(to, subject, body, from, bcc); 
    } 

    private static void SendEmail(string to, string subject, string body, MailAddress from, string bcc) 
    { 
     MailMessage message = new MailMessage(); 
     message.From = From; 
     message.To.Add(to); 
     if (!string.IsNullOrEmpty(bcc)) 
     { 
      message.Bcc.Add(bcc); 
     } 
     message.ReplyTo = from; 
     message.Subject = subject; 
     message.Body = HttpContext.Current.Server.HtmlEncode(body); 
     SmtpClient smtp = new SmtpClient(); 
     smtp.Send(message); 
    } 

    public static MailAddress From 
    { 
     get 
     { 
      if (null == _from) 
      { 
       SmtpSection section = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp"); 
       string address = section.From; 
       string displayName = ConfigurationManager.AppSettings["fromEmailDisplayName"]; 
       _from = new MailAddress(address, displayName); 
      } 
      return _from; 
     } 
    } 
} 

Và đây là các thiết lập web.config liên quan:

<appSettings> 
    <add key="fromEmailDisplayName" value="Firstname Lastname"/> 
</appSettings> 

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="Network" from="[email protected]"> 
      <network host="relay-hosting.secureserver.net" /> 
     </smtp> 
    </mailSettings> 
</system.net> 

Đối với tôi, chìa khóa là "message.From = Từ" và "tin nhắn. ReplyTo = từ ". GoDaddy dường như muốn thông báo đến từ một địa chỉ trong miền của bạn. Vì vậy, đối với các trang liên hệ, hãy sử dụng địa chỉ email mặc định của bạn làm Từ và đặt người gửi làm Trả lời. Email đi qua tốt sau đó.

0
var message = new MailMessage(); 
message.To.Add(new MailAddress("email-address")); 
message.From = new MailAddress("email-address"); 
message.Subject = "subject"; 
message.Body = string.Format("message-body"); 
message.IsBodyHtml = true; 
using (var smtp = new SmtpClient()) 
{ 
    smtp.Host = "relay-hosting.secureserver.net"; 
    smtp.EnableSsl = false; 
    smtp.Credentials = CredentialCache.DefaultNetworkCredentials; 
    await smtp.SendMailAsync(message); 
} 
0

Đối với những người muốn biết những gì nên Mã C# ngoài câu trả lời được chấp nhận, bên dưới mã đã làm việc cho tôi. Xin lưu ý rằng "từ" địa chỉ đã được đề cập trong web.config trong câu trả lời được chấp nhận, vì vậy không cần phải đề cập đến nó trong mã C#.

public static void SendMail(string emailid, string subject, string body) 
    { 
     System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); 

     System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); 

     msg.To.Add(new MailAddress(emailid)); 

     msg.Subject = subject; 
     msg.IsBodyHtml = true; 
     msg.Body = body; 

     client.Send(msg); 
    } 
Các vấn đề liên quan