2011-09-26 170 views
0
public static bool SendMail(string toList, string from, string ccList, string subject, string body) 
{ 
    MailMessage message = new MailMessage(); 
    SmtpClient smtpClient = new SmtpClient(); 

    try 
    { 
     MailAddress fromAddress = new MailAddress(from); 
     message.From = fromAddress; 
     message.To.Add(toList); 
     if (ccList != null && ccList != string.Empty) 
      message.CC.Add(ccList); 
     message.Subject = subject; 
     message.IsBodyHtml = true; 
     message.Body = body; 

     smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
     smtpClient.EnableSsl = true; 
     smtpClient.Timeout = 30000; 
     smtpClient.Host = "smtp.gmail.com"; // We use gmail as our smtp client 
     smtpClient.Port = 587; 
     smtpClient.UseDefaultCredentials = true; 
     smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "mypassword"); 


     smtpClient.Send(message); 
     return true; 
    } 
    catch (Exception ex) 
    { 
     return false; 
    } 
} 

该代码似乎没问题,但仍然无法工作,我无法弄清楚为什么? 任何其他方式使用gmail的smtp发送邮件。使用Gmail发送邮件

+0

我认为你应该尝试端口495(对于SSL)你在哪里得到587? –

回答

4

尝试

var client = new SmtpClient("smtp.gmail.com", 587) 
{ 
    Credentials = new NetworkCredential("[email protected]", "mypwd"), 
    EnableSsl = true 
}; 

client.Send("[email protected]", "[email protected]", "test", "testbody"); 

如果UseDefaultCredentials属性设置为false,然后将连接到服务器时使用的凭据在Credentials属性设置的值。在这里,您将UseDefaultCredentials设置为true,那么它将忽略您提供的凭据。

3

请与端口25一起尝试。它为我工作。同时删除UseDefaultCredentials的设置。

更新:港口587也为我工作。所以我认为UseDefaultCredentials只是你的代码中的问题。它应该被设置为false。

public static void SendMail(string ToMail, string FromMail, string Cc, string Body, string Subject) 
{ 
    SmtpClient smtp = new SmtpClient("smtp.gmail.com", 25); 
    MailMessage mailmsg = new MailMessage(); 

    smtp.EnableSsl = true; 
    smtp.Credentials = new NetworkCredential("email","password"); 

    mailmsg.From = new MailAddress(FromMail); 
    mailmsg.To.Add(ToMail); 

    if (Cc != "") 
    { 
     mailmsg.CC.Add(Cc); 
    } 
    mailmsg.Body = Body; 
    mailmsg.Subject = Subject; 
    mailmsg.IsBodyHtml = true; 

    mailmsg.Priority = MailPriority.High; 

    try 
    { 
     smtp.Timeout = 500000; 
     smtp.Send(mailmsg); 
     mailmsg.Dispose(); 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 
+0

我有类似的问题,一些人可以帮助我http://stackoverflow.com/questions/25543233/unable-to-send-the-mailmessage-in-aspnet – Prathyush