有兩種方法可以通過SSL執行SMTP:顯式和隱式。顯式表示您以明文形式連接到普通SMTP端口(通常爲25或587),然後發出「starttls」命令切換到SSL模式。隱式意味着你連接到一個希望所有東西都是SSL的端口(通常是465)。
Asp.net使用「System.Net.Mail.SmtpClient()」發送電子郵件。主要問題是SmtpClient不支持隱式SSL連接,但確實支持顯式連接(帶SSL的System.Net.Mail根據端口465進行身份驗證)。因此,如果郵件服務器(SMTP)不支持顯式連接,它將無法發送電子郵件和顯示消息,如「連接超時」,「郵件無法發送到SMTP服務器。傳輸錯誤代碼是0x80040217。服務器響應不可用「等。
要在ASP.net中解決此問題,我們可以使用用於Windows 2000庫(Cdosys.dll)的協作數據對象(CDO)發送帶附件的電子郵件。 Microsoft Outlook使用此DLL發送電子郵件。在您的ASP.net解決方案中,您必須添加參考「Windows 2000庫的Microsoft CDO」。它會在Bin文件夾中添加兩個標記爲dll的文件。
現在做婁代碼在C#.net:
public static void SendMail(string FromName, string FromEmail, string ReceiverEmail, string CC, string BCC, string subj, string Mssg)
{
const var cdoSendUsingPort = 2;
const var cdoBasicAuth = 1;
const var cdoTimeout = 60;
var mailServer = "mail.XXXXXXX.net";
var SMTPport = 465;
var mailusername = "[email protected]";
var mailpassword = "PPPPXXXX";
var objEmail = CreateObject("CDO.Message");
var objConf = objEmail.Configuration;
var objFlds = objConf.Fields;
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort;
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mailServer;
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPport;
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true;
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = cdoTimeout;
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasicAuth;
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = mailusername;
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = mailpassword;
objFlds.Update();
objEmail.To = ReceiverEmail;
objEmail.From = FromEmail;
objEmail.CC = CC;
objEmail.BCC = BCC;
objEmail.Subject = subj;
objEmail.HTMLBody = Mssg;
objEmail.Send();
}
在VB.net
Public Shared Sub SendMail(ByVal FromName As String, ByVal FromEmail As String, ByVal ReceiverEmail As String, ByVal CC As String, ByVal BCC As String, ByVal subj As String, ByVal Mssg As String)
''#################Sending Email##########################
Const cdoSendUsingPort = 2 ' Send the message using SMTP
Const cdoBasicAuth = 1 ' Clear-text authentication
Const cdoTimeout = 60 ' Timeout for SMTP in seconds
Dim mailServer = "mail.XXXXXXX.net"
Dim SMTPport = 465
Dim mailusername = "[email protected]"
Dim mailpassword = "PPPPXXXX"
Dim objEmail = CreateObject("CDO.Message")
Dim objConf = objEmail.Configuration
Dim objFlds = objConf.Fields
With objFlds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mailServer
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPport
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = cdoTimeout
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasicAuth
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = mailusername
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = mailpassword
.Update()
End With
objEmail.To = ReceiverEmail
objEmail.From = FromEmail
objEmail.CC = CC
objEmail.BCC = BCC
objEmail.Subject = subj
objEmail.HTMLBody = Mssg
'objEmail.AddAttachment "C:\report.pdf"
objEmail.Send()
End Sub
全球化志願服務青年: Original post 隱&明確SMTP http://help.fogcreek.com/9002/using-an-smtp-server-with-ssl 使用Cdosys.dll庫發送帶附件的電子郵件https://support.microsoft.com/en-us/help/310212/how-to-use-the-cdosys-dll-library-to-send-an-e-mail-message-with-attac
您可以通過標準電子郵件客戶端進行連接嗎?否則,它可能是您防火牆的問題。您是否在帳戶中啓用POP訪問權限? – MiffTheFox 2009-07-04 13:42:57
是的,我可以,而且我也是。 – Paul 2009-07-06 02:26:14