【问题标题】:How to pass email address and password for creating emails in GMail?如何传递电子邮件地址和密码以在 GMail 中创建电子邮件?
【发布时间】:2020-06-03 19:50:39
【问题描述】:

我需要我的 Access 数据库来创建一键发送的电子邮件。

这适用于 Outlook,我为 Gmail 修改了代码。

我不想硬编码电子邮件用户名和密码。我想从主窗体上的组合框中选择它。

我收到错误

Private Sub Email_Allocation_List_Click()

    Dim newMail As CDO.Message
    Dim mailConfiguration As CDO.Configuration
    Dim fields As Variant
    Dim msConfigURL As String
    
    On Error GoTo errHandle
    
    Set newMail = New CDO.Message
    Set mailConfiguration = New CDO.Configuration
    
    mailConfiguration.Load -1
    
    Set fields = mailConfiguration.fields
    
    With newMail
        .Subject = "subject"
        .From = [Forms]![Main form]![EmailAddress].Column(1)
        .To = "email address"
        .CC = "email address"
        .BCC = ""
        .TextBody = "Hello, " & vbNewLine & vbNewLine & _
          "Please find attached todays list of lines to be allocated." & _
           vbNewLine & vbNewLine & "Kind Regards." & vbNewLine & vbNewLine & "Carly"
        .AddAttachment "file location"
    End With
    
    msConfigURL = "http://schemas.microsoft.com/cdo/configuration"
    
    With fields
        .Item(msConfigURL & "/smtpusessl") = True
        .Item(msConfigURL & "/smtpauthenticate") = 1
        
        .Item(msConfigURL & "/smtpserver") = "smtp.gmail.com"
        .Item(msConfigURL & "/smtpserverport") = 465
        .Item(msConfigURL & "/sendusing") = 2
        
        .Item(msConfigURL & "/sendusername") = [Forms]![Main form]![EmailAddress].Column(1)
        .Item(msConfigURL & "/sendpassword") = [Forms]![Main form]![EmailAddress].Column(2)
        
        .Update
    
    End With
    
    newMail.Configuration = mailConfiguration
    newMail.Send
    
    MsgBox "E-Mail has been sent", vbInformation
    
    exit_line:
    '// Release object memory
    Set newMail = Nothing
    Set mailConfiguration = Nothing
    
    Exit Sub
    
    errHandle:
    
    MsgBox "Error: " & Err.Description, vbInformation
    
    GoTo exit_line
    
End Sub

我检查了组合框是否适用于文本框。

【问题讨论】:

  • 显然,硬编码一个值和从一个表单(或其他任何地方)提供相同的值应该没有区别。您可能不小心提供了错误的值或错误的类型(CStr 可以帮助您)。首先打印出[Forms]![Main form]![EmailAddress].Column(1)[Forms]![Main form]![EmailAddress].Column(2) 的值
  • @Erik A 我用下面的方法做到了,它在文本框上工作得很好(我也尝试用这种格式而不是[Forms]![Main form]![EmailAddress].Column(2)Private Sub EmailAddress_Click() Me.Password = Me.EmailAddress.Column(2) end sub
  • 代码似乎是正确的,所以@ErikA 的评论似乎是正确的 - 你的组合框没有提供你所期望的。

标签: vba email ms-access gmail cdo.message


【解决方案1】:

经过一番折腾,你是对的,代码很好——它正确地读取了组合框的内容——但是如果电子邮件中有大写字母,GMail 不接受登录信息地址!!!现在工作得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2017-01-11
    • 2012-08-12
    • 2011-04-16
    • 1970-01-01
    相关资源
    最近更新 更多