我也曾经在使用我的Gmail账户发送邮件时遇到了一些问题,这些问题有几个是上述情况引起的。以下是我如何使其工作并保持灵活性的总结:
- 首先设置您的GMail帐户:
- 启用IMAP并确认最大消息数量正确(可以在此处完成)
- 确保您的密码至少为7个字符,并且足够强壮(根据Google)
- 确保您不必先输入验证码。您可以通过从浏览器发送测试电子邮件来实现。
- 在web.config中进行更改(或者app.config,我还没有尝试过,但我认为在Windows应用程序中使其工作同样容易):
<configuration>
<appSettings>
<add key="EnableSSLOnMail" value="True"/>
</appSettings>
...
<system.net>
<mailSettings>
<smtp from="yourusername@gmail.com" deliveryMethod="Network">
<network
defaultCredentials="false"
host="smtp.gmail.com"
port="587"
password="stR0ngPassW0rd"
userName="yourusername@gmail.com"
/>
</smtp>
</mailSettings>
</system.net>
</configuration>
Add a Class to your project:
Imports System.Net.Mail
Public Class SSLMail
Public Shared Sub SendMail(ByVal e As System.Web.UI.WebControls.MailMessageEventArgs)
GetSmtpClient.Send(e.Message)
e.Cancel = True
End Sub
Public Shared Sub SendMail(ByVal Msg As MailMessage)
GetSmtpClient.Send(Msg)
End Sub
Public Shared Function GetSmtpClient() As SmtpClient
Dim smtp As New Net.Mail.SmtpClient
smtp.EnableSsl = CBool(ConfigurationManager.AppSettings("EnableSSLOnMail"))
Return smtp
End Function
End Class
现在,每当您想要发送电子邮件,您只需要调用 SSLMail.SendMail
:
例如,在一个带有 PasswordRecovery 控件的页面中:
Partial Class RecoverPassword
Inherits System.Web.UI.Page
Protected Sub RecoverPwd_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles RecoverPwd.SendingMail
e.Message.Bcc.Add("webmaster@example.com")
SSLMail.SendMail(e)
End Sub
End Class
或者在您的代码中的任何位置调用:
SSLMail.SendMail(New system.Net.Mail.MailMessage("from@from.com","to@to.com", "Subject", "Body"})
希望这篇文章能帮助到遇到这个问题的任何人!(我使用的是VB.NET,但我认为将其转换为任何.NET语言都是微不足道的。)