ฉันมีปัญหาบางอย่างในการส่งอีเมลจากบัญชี gmail ของฉันเช่นกันซึ่งเกิดจากหลาย ๆ สถานการณ์ดังกล่าวข้างต้น นี่เป็นบทสรุปของวิธีที่ฉันใช้งานและทำให้มันยืดหยุ่นในเวลาเดียวกัน:
- ก่อนอื่นให้ทำการตั้งค่าบัญชี GMail ของคุณ:
- เปิดใช้งาน IMAP และยืนยันจำนวนข้อความสูงสุดที่ถูกต้อง(คุณสามารถทำได้ที่นี่)
- ตรวจสอบให้แน่ใจว่ารหัสผ่านของคุณมีอย่างน้อย 7 ตัวอักษรและแข็งแรง (ตาม Google)
- ตรวจสอบให้แน่ใจว่าคุณไม่ต้องป้อนรหัสแจ้งลบความคิดเห็นก่อน คุณสามารถทำได้โดยส่งอีเมลทดสอบจากเบราว์เซอร์ของคุณ
- ทำการเปลี่ยนแปลงใน web.config (หรือ app.config ฉันยังไม่ได้ลองเลย แต่ฉันคิดว่ามันง่ายที่จะทำให้มันทำงานได้ในแอพพลิเคชั่น windows):
<configuration>
<appSettings>
<add key="EnableSSLOnMail" value="True"/>
</appSettings>
<!-- other settings -->
...
<!-- system.net settings -->
<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"
/>
<!-- When using .Net 4.0 (or later) add attribute: enableSsl="true" and you're all set-->
</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)
'Since the message is sent here, set cancel=true so the original SmtpClient will not try to send the message too:
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
'Read EnableSSL setting from web.config
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 ใด ๆ )