Отправка электронной почты через VB6
Мне интересно, есть ли способ отправить электронное письмо (SMTP) через VB6. У меня есть приложение, которому просто нужно отправить простое электронное письмо, когда пользователь закончит, чтобы группа знала, что приложение обработано. Есть ли способ сделать это?
5 ответов:
Да-зависит от того, какую версию windows вы используете. Предполагая одну из более поздних версий-CDO.Сообщение работает отлично.
Sub SendMessage(MailFrom,MailTo,Subject,Message) Dim ObjSendMail Set ObjSendMail = CreateObject("CDO.Message") 'This section provides the configuration information for the remote SMTP server. With ObjSendMail.Configuration.Fields .Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'Send the message using the network (SMTP over the network). .Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smpt server Address" .Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False 'Use SSL for the connection (True or False) .Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60 ' If your server requires outgoing authentication uncomment the lines below and use a valid email address and password. ' .Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'basic (clear-text) authentication ' .Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = MailFrom ' .Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = yourpassword .Update End With 'End remote SMTP server configuration section== ObjSendMail.To = MailTo ObjSendMail.Subject = Subject ObjSendMail.From = MailFrom ' we are sending a html email.. simply switch the comments around to send a text email instead ObjSendMail.HTMLBody = Message 'ObjSendMail.TextBody = Message ObjSendMail.Send Set ObjSendMail = Nothing End Sub
Я нашел это здесь :
Dim UserName$, UserMail$, MailRecipiant$, MailBody$, SockData$ Private Sub Command1_Click() UserName = "YourUserName_or_Addr" UserMail = "Your Name <You@provider.com>" MailRecipiant = UserMail MailBody = "The message goes here" Winsock1.LocalPort = 0 Winsock1.RemoteHost = "smtp-server" Winsock1.RemotePort = 25 Winsock1.Connect End Sub Private Sub Winsock1_Connect() Label1 = "Sending message..." Winsock1.SendData "EHLO " & UserName & vbCrLf If Not WaitFor("250") Then GoTo 100 Winsock1.SendData "MAIL FROM: " & UserMail & vbCrLf If Not WaitFor("250") Then GoTo 100 Winsock1.SendData "RCPT TO: " & MailRecipiant & vbCrLf If Not WaitFor("250") Then GoTo 100 Winsock1.SendData "DATA" & vbCrLf If Not WaitFor("354") Then GoTo 100 Winsock1.SendData MailBody & vbCrLf & "." & vbCrLf If Not WaitFor("250") Then GoTo 100 Winsock1.SendData "QUIT" & vbCrLf If Not WaitFor("221") Then GoTo 100 Label1 = "Message sent" GoTo 200 100 Label1 = SockData 200 Winsock1.Close End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Winsock1.GetData SockData End Sub Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) Label1 = "Error: " & Description SockData = "Error" Winsock1.Close End Sub Private Function WaitFor(SockResponse As String) As Boolean Do While Left(SockData, 3) <> SockResponse And Left(SockData, 3) <> "220" And Left(SockData, 3) <> "250" DoEvents If Left(SockData, 3) > "400" Then Exit Function Loop WaitFor = 1 SockData = "" End Function
Мы надеемся, что на вашем компьютере будут установлены библиотеки CDOSYS:
CDO Messaging-MSDN
создание и отправка сообщения-MSDN
отправка электронной почты с помощью CDOSYS ( реальная сделка )
ASP отправка электронной почты с CDOSYSЕсли у вас нет этой библиотеки (и вы не можете ее установить), то всегда есть CDONTS, чтобы вернуться, но он устарел:
Использование компонента CDONTS для отправки электронная почта со страниц ASP.
У Дейва есть хорошее решение, если вам действительно нужно отправить электронную почту с компьютера клиента. Однако иногда вы попадаете в неприятности с брандмауэрами и тому подобным. В том случае, когда вы подключаетесь к SQL-серверу, я обнаружил, что это проще и легче управлять, если вы прокси-сервер свою почту через SQL-сервер (либо путем постановки ее в очередь в таблицу исходящей почты, либо вызовом самого
xp_sendmail
сохраненного proc).Вот учебник о том, как получить SQL Mail setup и работать на сервере, а также на в ней показано, как использовать хранимую процедуру для отправки сообщения электронной почты.
Я нашел это решение выгодным, потому что:
- компьютеры Windows 7 блокировали все исходящие SMTP
- реализация всех повторных попыток и тому подобное, чтобы сделать исходящую электронную почту "правильной", была довольно сложной
- используя метод очереди с SQL Server, но фактически не устанавливая SQL Mail в моих базах данных разработки или тестирования, электронные письма оставались в очереди, если я не работал против производства сервер
Ранее мы использовали управлениеOstroSoft SMTP с очень хорошими результатами.