Saya juga mengalami masalah dalam mengirim email dari akun gmail saya, yang disebabkan oleh beberapa situasi di atas. Berikut ringkasan cara saya membuatnya bekerja, dan menjaganya tetap fleksibel pada saat yang sama:
- Pertama-tama siapkan akun GMail Anda:
- Aktifkan IMAP dan nyatakan jumlah maksimum pesan yang tepat (Anda bisa melakukannya di sini)
- Pastikan kata sandi Anda setidaknya 7 karakter dan kuat (menurut Google)
- Pastikan Anda tidak harus memasukkan kode captcha terlebih dahulu. Anda dapat melakukannya dengan mengirim email percobaan dari browser Anda.
- Buat perubahan di web.config (atau app.config, saya belum pernah mencobanya tetapi saya menganggap itu mudah untuk membuatnya bekerja di aplikasi 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
Dan sekarang setiap kali Anda ingin mengirim email yang perlu Anda lakukan hanyalah menelepon SSLMail.SendMail
:
misalnya di Halaman dengan kontrol 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
Atau di mana saja dalam kode Anda, Anda dapat menelepon:
SSLMail.SendMail(New system.Net.Mail.MailMessage("from@from.com","to@to.com", "Subject", "Body"})
Saya harap ini membantu siapa saja yang mengalami posting ini! (Saya menggunakan VB.NET tapi saya pikir itu sepele untuk mengubahnya menjadi bahasa .NET.)