|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
网上主流的发邮件例子是使用JMail组件,实际上没必要
使用系统自带的cdo组件就可以实现发送邮件
本函数可以发送单个附件,或者发送附件列表。(未考虑邮箱服务器支持的附件总大小。)
调用例子:
- Dim msg as Boolean
- msg = SendMail("loquat@qq.com","xbssjkdklkagka","loquat@qq.com","标题","正文",,True,"c:\1.txt")
复制代码- Public Function SendMail(ByVal 发送方邮箱$, ByVal STMP密码$, ByVal 目标邮箱$, ByVal 标题$, ByVal 正文$, Optional 抄送邮箱$ = "", Optional ByVal 使用SSL As Boolean = False, Optional ByVal 附件) As Boolean
- ' 参数说明:
- ' 1.发送方邮箱: 发送邮件的邮箱帐号
- ' 2.STMP密码: 发送邮件的邮箱密码或SMTP密码,视邮件服务商而定
- ' 3.目标邮箱: 接收邮件的主要邮箱地址,可以是多个目标
- ' 4.抄送邮箱: 接收邮件的抄送邮箱地址,可以是多个目标
- ' 5.标题: 邮件主题
- ' 6.正文: 邮件正文
- ' 7.使用SSL: 是否SSL加密,视邮件服务商而定
- ' 8.附件: 邮件附件,传入字符串(单一附件)或者[b]一维数组(多个附件)[/b]
- 'On Error Resume Next
- Dim arrID, MS_Space$, i&, aTypeName$
- Dim Email As Object
- arrID = Split(发送方邮箱, "@")
- MS_Space = "http://schemas.microsoft.com/cdo/configuration/"
- Set Email = CreateObject("CDO.Message")
- Email.From = 发送方邮箱
- Email.To = 目标邮箱
- If 抄送邮箱 <> "" Then Email.CC = 抄送邮箱
- If 标题 <> "" Then Email.Subject = 标题
- If 正文 <> "" Then Email.Textbody = 正文
- aTypeName = TypeName(附件) '判断变量类型
- If aTypeName = "String" Then '传入字符串
- If Dir(附件) <> "" Then '文件存在
- Email.AddAttachment 附件 '单个附件
- End If
- ElseIf aTypeName = "String()" Then
- For i = LBound(附件) To UBound(附件) '循环添加多个附件
- If Dir(附件(i)) <> "" Then '文件存在
- Email.AddAttachment 附件(i)
- End If
- Next
- End If
- With Email.Configuration.Fields
- .Item(MS_Space & "sendusing") = 2 '发送方式:1代表通过本机SMTP服务发信,2代表通过端口访问远程SMTP服务器发信
- .Item(MS_Space & "smtpserver") = "smtp." & arrID(1) 'SMTP服务器域名或IP,企业邮箱为 mail 前缀
- .Item(MS_Space & "smtpauthenticate") = 1 'SMTP服务器验证密码方式:0代表匿名,1代表基本验证,2代表NTLM方式验证
- If 使用SSL = False Then
- .Item(MS_Space & "smtpserverport") = 25
- Else
- .Item(MS_Space & "smtpserverport") = 465
- .Item(MS_Space & "smtpusessl") = True
- End If
- .Item(MS_Space & "stmpconnectiontimerout") = 60 '设置连接超时,单位秒
- .Item(MS_Space & "sendusername") = 发送方邮箱
- .Item(MS_Space & "sendpassword") = STMP密码
- ' 当使用本机SMTP服务发信时,需要填写代理地址和端口号
- ' .Item(MS_Space & "urlproxyserver") = "61.155.220.244:80"
- ' .Item(MS_Space & "urlproxybypass") = ""
- ' .Item(MS_Space & "urlgetlatestversion") = True
- .Update
- End With
- Email.Send
- SendMail = (err.Number = 0)
- Debug.Print err.Description
- Set Email = Nothing
- End Function
复制代码
|
评分
-
1
查看全部评分
-
|