最简单的就是借助jmail组件。用法和ASP一样。
创新互联建站专注于尖山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供尖山营销型网站建设,尖山网站制作、尖山网页设计、尖山网站官网定制、微信小程序开发服务,打造尖山网络公司原创品牌,更为您提供尖山网站排名全网营销落地服务。
sub sendMail()
Dim jm As Object
On Error Resume Next
Err.Clear
Set jm = CreateObject("ml543.Message")
If Err.Number 0 Then
mail = "Error:请先安装Jmail组件,或直接注册jmail.dll文件!"
Exit sub
End If
jm.Silent = False
jm.Charset = "gb2312"
'jm.MailDomain = mailuserdomain
'jm.AddAttachment "c:\test.rar", True, "application/octet-stream" '加附件
'jm.contentType = "Text/Html" '发HTML邮件内容要这句。有附件时不要这句
'jm.HTMLBody = mbody
jm.Body = mbody '发文本型邮件
jm.Subject = "邮件标题在此写"
jm.AddRecipient "收件人的email写在这"
jm.MailServerUserName = "发件人账号@xxx.com"
jm.MailServerPassWord = "123456"
jm.From = "发件人Email"
jm.fromname = "发件人姓名"
sendOK = jm.send("smtp.163.com") '发送
If sendOK = True Then
msgbox "发送邮件成功!"
Else
msgbox "发送邮件失败!"
End If
Set jm = Nothing
end sub
这段代码我执行无误,不太清楚题主是如何异步发送的,题主也没给出错误究竟是什么,所以无从判断。
只能说需要手动释放,或者用 message = Nothing 也可以释放。
【针对问题补充的回答】
注释行已去掉,仍能正常运行,可能跟网络环境有关。
另外不知题主 AddHandler client.SendCompleted, AddressOf SendCompletedCallback 这行中的回调函数 SendCompletedCallback 是怎么写的,我写的是:
Private Function SendCompletedCallback(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
If e.Cancelled Then
REM 邮件发送被取消
ElseIf e.Error.ToString "" Then
REM 邮件发送失败
Else
REM 发送成功
End If
End Function
另外建议用 Try-Ctach-End Try 结构,并在释放前设置延时函数。
相当多的邮件服务器不支持大附件,一般为32MB,网易的是50MB。参照链接:
所以发送失败未必是你代码的问题。很有可能是你服务器的问题。请找一个支持大附件的邮箱试一试,找不到的话看能不能把附件拆到32M以下,然后多次发送。
在Identity2.0里面封装了IIdentityMessageService接口,可以用来发送接收邮件。
看看
Imports System.Threading.Tasks
Imports System.Security.Claims
Imports Microsoft.AspNet.Identity
Imports Microsoft.AspNet.Identity.EntityFramework
Imports Microsoft.AspNet.Identity.Owin
Imports Microsoft.Owin
Imports Microsoft.Owin.Security
public function SendAsync(message as IdentityMessage) as task
dim credentialUserName = "邮箱登录名"
dim sentFrom = "你的邮箱地址"
dim pwd= "邮箱登录密码";
dim client as new System.Net.Mail.SmtpClient("smtp服务器地址")
client.Port = 25'mtp邮件服务器端口
client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
client.UseDefaultCredentials = false
dim credentials as new System.Net.NetworkCredential(credentialUserName, pwd)
client.EnableSsl = true
client.Credentials = credentials
dim mail as new System.Net.Mail.MailMessage(sentFrom, message.Destination)
mail.Subject = message.Subject
mail.Body = message.Body
return client.SendMailAsync(mail)
end function