Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 11300|回复: 20

[已解决]vba发送邮件报错

[复制链接]
发表于 2013-9-15 09:10 | 显示全部楼层 |阅读模式
我把代码中的发件人改成自己的qq邮件,密码改为自己的qq密码,错误提示如附件中sheet1的截图所示,请教是什么原因?
最佳答案
2013-9-15 14:56
  1. Sub CDOSENDEMAIL()

  2.     Dim CDOMail As Object
  3.     Dim STUl As String

  4.     On Error Resume Next    '出错后继续执行
  5.     Application.DisplayAlerts = False    '禁用系统提示
  6.    
  7.     STUl = "http://schemas.microsoft.com/cdo/configuration/"    '微软服务器网址
  8.     'ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly    '将工作簿设置为只读模式
  9.    
  10.     Set CDOMail = CreateObject("CDO.Message")    '创建对象
  11.     With CDOMail
  12.         .From = "163728@qq.com"    '设置发信人的邮箱
  13.         .To = "163728@qq.com"    '设置收信人的邮箱
  14.         .Subject = "主题:用CDO发送邮件试验,时间是:" & Format(Now, "YYYY-MM-DD mm:hh:ss")    '设定邮件的主题
  15.         '.TextBody = "文本内容" '使用文本格式发送邮件
  16.         .HtmlBody = "当您看到此封邮件,表明CDO设置正确"    '使用Html格式发送邮件
  17.         '.AddAttachment ThisWorkbook.FullName    '发送本工作簿为附件
  18.         

  19.         With .Configuration.Fields
  20.             .Item(STUl & "smtpserver") = "smtp.qq.com"    'SMTP服务器地址
  21.             .Item(STUl & "smtpserverport") = 25    'SMTP服务器端口
  22.             .Item(STUl & "sendusing") = 2    '发送端口
  23.             .Item(STUl & "smtpauthenticate") = 1    '远程服务器需要验证
  24.             .Item(STUl & "sendusername") = "163728@qq.com"    '发送方邮箱名称
  25.             .Item(STUl & "sendpassword") = ""    '发送方邮箱密码
  26.             .Item(STUl & "smtpconnectiontimeout") = 60    '连接超时(秒)
  27.             .Update
  28.         End With

  29.         .Send    '执行发送
  30.     End With

  31.     Set CDOMail = Nothing    '发送成功后即时释放对象
  32.     If Err.Number = 0 Then
  33.         MsgBox "成功发送邮件", , "温馨提示"    '如果没有出错,则提示发送成功
  34.     Else
  35.         MsgBox Err.Description, vbInformation, "邮件发送失败"    '如果出错,则提示错误类型和错误代码
  36.     End If
  37.     'ThisWorkbook.ChangeFileAccess Mode:=xlReadWrite    '将工作簿设置为读写模式
  38.     Application.DisplayAlerts = True    '恢复系统提示
  39. End Sub
复制代码
重新整理下,测式没问题了,你只要把发信人都换成你的邮箱,收信人改下,再填上密码就可以了。

vba发送邮件.rar

32.22 KB, 下载次数: 79

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-9-15 09:22 | 显示全部楼层
连接不了服务器。
你换个别的邮箱地址试试(非企鹅的)
回复

使用道具 举报

发表于 2013-9-15 09:25 | 显示全部楼层
Sub 邮件发送()
    Dim cm As New CDO.Message

    On Error GoTo ErrorHandler
         
    Set cm = CreateObject("CDO.Message")    '创建对象 '引用路径:C:\Windows\system32\cdosys.dll
    cm.From = "1234567@qq.com"    '设置发信人的邮箱"
    cm.To = "649725266@qq.com,excelpx@163.com"    '设置收信人的邮箱
    cm.Subject = "主题:邮件发送试验"    '设定邮件的主题
    'cm.TextBody =  '邮件正文,使用文本格式发送邮件
    cm.HtmlBody = "邮件发送试验^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"    '使用html格式发送邮件
    cm.AddAttachment ThisWorkbook.Path & "/a.xls"
    STUl = "http://schemas.microsoft.com/cdo/configuration/"    '微软服务器网址
    With cm.Configuration.Fields
        .Item(STUl & "smtpserver") = "smtp.qq.com"         'SMTP服务器地址
        .Item(STUl & "smtpserverport") = 25                  'SMTP服务器端口
        .Item(STUl & "sendusing") = 2                        '发送端口
        .Item(STUl & "smtpauthenticate") = 1      '需要提供用户名和密码,0是不提供           '
        .Item(STUl & "sendusername") = "1234567"                '发送方邮箱名称
        .Item(STUl & "sendpassword") = "12345671"                  '发送方邮箱密码
        .Update
    End With
    cm.Send    '最后当然是执行发送了
    Set cm = Nothing
    '发送成功后即时释放对象
    Exit Sub
   
ErrorHandler:
    MsgBox Err.Number & vbCrLf & Err.Description

End Sub

加上红字的,有利于看报错的提示。
回复

使用道具 举报

发表于 2013-9-15 09:29 | 显示全部楼层
提供个论坛轩辕轼轲老师的代码
  1. Sub CDOSENDEMAIL()

  2.     Dim CDOMail As Variant

  3.     On Error Resume Next    '出错后继续执行

  4.     Application.DisplayAlerts = False    '禁用系统提示

  5.     ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly    '将工作簿设置为只读模式

  6.     Set CDOMail = CreateObject("CDO.Message")    '创建对象

  7.     CDOMail.From = "10000@qq.com"    '设置发信人的邮箱

  8.     CDOMail.To = "10000@qq.com"    '设置收信人的邮箱

  9.     CDOMail.Subject = "主题:用CDO发送邮件试验"    '设定邮件的主题

  10.     'CDOMail.TextBody = "文本内容" '使用文本格式发送邮件

  11.     CDOMail.HtmlBody = "当您看到此封邮件,表明CDO设置正确"    '使用Html格式发送邮件

  12.     CDOMail.AddAttachment ThisWorkbook.FullName    '发送本工作簿为附件

  13.     STUl = "http://schemas.microsoft.com/cdo/configuration/"    '微软服务器网址

  14.     With CDOMail.Configuration.Fields

  15.         .Item(STUl & "smtpserver") = "smtp.qq.com"    'SMTP服务器地址

  16.         .Item(STUl & "smtpserverport") = 25    'SMTP服务器端口

  17.         .Item(STUl & "sendusing") = 2    '发送端口

  18.         .Item(STUl & "smtpauthenticate") = 1    '远程服务器需要验证

  19.         .Item(STUl & "sendusername") = "10000"    '发送方邮箱名称

  20.         .Item(STUl & "sendpassword") = "password"    '发送方邮箱密码

  21.         .Item(STUl & "smtpconnectiontimeout") = 60    '连接超时(秒)

  22.         .Update

  23.     End With

  24.     CDOMail.Send    '执行发送

  25.     Set CDOMail = Nothing    '发送成功后即时释放对象

  26.     If Err.Number = 0 Then

  27.         MsgBox "成功发送邮件", , "温馨提示"    '如果没有出错,则提示发送成功

  28.     Else

  29.         MsgBox Err.Description, vbInformation, "邮件发送失败"    '如果出错,则提示错误类型和错误代码

  30.     End If

  31.     ThisWorkbook.ChangeFileAccess Mode:=xlReadWrite    '将工作簿设置为读写模式

  32.     Application.DisplayAlerts = True    '恢复系统提示

  33. End Sub
复制代码
回复

使用道具 举报

发表于 2013-9-15 09:29 | 显示全部楼层
关键是你的QQ邮箱是否设置了!
未命名.JPG
回复

使用道具 举报

 楼主| 发表于 2013-9-15 13:20 | 显示全部楼层
hwc2ycy 发表于 2013-9-15 09:29
提供个论坛轩辕轼轲老师的代码

谢谢了,我用了您提供的代码,还是提示“与服务器的传输连接失败。”
回复

使用道具 举报

 楼主| 发表于 2013-9-15 13:21 | 显示全部楼层
zjdh 发表于 2013-9-15 09:29
关键是你的QQ邮箱是否设置了!

我设置过了,还是不行呀!
回复

使用道具 举报

发表于 2013-9-15 14:15 | 显示全部楼层
你换个别的邮箱地址,不用企鹅的试试。
我之前测的时候说是拒收。
你用163,SINA的试试。
回复

使用道具 举报

发表于 2013-9-15 14:17 | 显示全部楼层
对了,你改了上面的发信人的资料没?那也是要改的。
CDOMail.From =  '设置发信人的邮箱"
回复

使用道具 举报

发表于 2013-9-15 14:21 | 显示全部楼层
Saint_Zuo 发表于 2013-9-15 13:21
我设置过了,还是不行呀!

我刚才用你的宏发了几个邮件,全都成功啦!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-16 13:35 , Processed in 6.038642 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表