Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 使用Access VBA在群发电子邮件中提示自定义消息_Email_Ms Access_Outlook_Vba - Fatal编程技术网

Email 使用Access VBA在群发电子邮件中提示自定义消息

Email 使用Access VBA在群发电子邮件中提示自定义消息,email,ms-access,outlook,vba,Email,Ms Access,Outlook,Vba,我正在尝试组合一个工具,从数据库表向用户查询发送大量电子邮件。我使用的是SendObject方法,它工作得很好 SendObject(ObjectType, ObjectName, OutputFormat, To, Cc, Bcc, Subject, MessageText, EditMessage, TemplateFile) 当我需要新消息时,我手动修改VBA代码;使用vbNewLine表示MessageText字符串字段中的换行符 我想创建一个提示,要求用户键入消息,并在宏运行时自动使

我正在尝试组合一个工具,从数据库表向用户查询发送大量电子邮件。我使用的是SendObject方法,它工作得很好

SendObject(ObjectType, ObjectName, OutputFormat, To, Cc, Bcc, Subject, MessageText, EditMessage, TemplateFile)
当我需要新消息时,我手动修改VBA代码;使用vbNewLine表示MessageText字符串字段中的换行符

我想创建一个提示,要求用户键入消息,并在宏运行时自动使用换行符格式化消息

电子邮件是为每位收件人量身定制的几段文字的时事通讯(例如John Doe=亲爱的John Doe,Gary Stu=亲爱的Gary Stu)


SendObject
可以设置为在发送电子邮件之前提示用户编辑电子邮件的选项,但每个修改对每个电子邮件都是唯一的。

您只需创建变量来生成电子邮件正文或主题或两者

为了从记录集中提取数据,假设
tblContactData
表中有名字、姓氏、emailID等

    Dim strSubject as string, strSubjectLine as string
    Dim strMessageBody as string, strFirstName as string, strLastName as string, recContactData as DAO.recordset
    
set recContactData = CurrentDB.OpenRecordset("Select  * from tblContactData")

'Loop all the contacts for email
Do Until recContactData.EOF  = True
'    strSubjectLine = InputBox("Enter Subject Line", "Input")
    strSubjectLine = "Ref No" & recContactData.Fields("ContactID")
    strSubject = "Your email , " & strSubjectLine
    
    'strFirstName = InputBox("Enter First Name", "Input")
    strFirstName = recContactData.Fields("FirstName")
    'strLastName = InputBox("Enter Last Name", "Input")
    strLastName = recContactData.Fields("LastName")

    strMessageBody = "Hello " & strFirstName & strLastName &  vbNewLine & vbCrLf & " Let me first congratulate you for registering this program"
    
    SendObject(, "", "", recContactData.Fields("EmailID"), "", "", strSubject, strMessageBody,false, "")

  recContactData.MoveNext
Loop

您只需要创建变量来生成电子邮件正文或主题,或两者兼而有之

为了从记录集中提取数据,假设
tblContactData
表中有名字、姓氏、emailID等

    Dim strSubject as string, strSubjectLine as string
    Dim strMessageBody as string, strFirstName as string, strLastName as string, recContactData as DAO.recordset
    
set recContactData = CurrentDB.OpenRecordset("Select  * from tblContactData")

'Loop all the contacts for email
Do Until recContactData.EOF  = True
'    strSubjectLine = InputBox("Enter Subject Line", "Input")
    strSubjectLine = "Ref No" & recContactData.Fields("ContactID")
    strSubject = "Your email , " & strSubjectLine
    
    'strFirstName = InputBox("Enter First Name", "Input")
    strFirstName = recContactData.Fields("FirstName")
    'strLastName = InputBox("Enter Last Name", "Input")
    strLastName = recContactData.Fields("LastName")

    strMessageBody = "Hello " & strFirstName & strLastName &  vbNewLine & vbCrLf & " Let me first congratulate you for registering this program"
    
    SendObject(, "", "", recContactData.Fields("EmailID"), "", "", strSubject, strMessageBody,false, "")

  recContactData.MoveNext
Loop

您创建了一个包含两个文本框的表单,即txtFirstName和txtLastName。然后创建一个按钮并将此代码放入按钮单击事件:

请尝试以下VBA代码:

Sub btnSend_Click()
  Dim message as String    
  'Make sure to handle the case if textboxes are empty

  message = "Dear " & txtFirstName.value & " " & txtLastName.value & ", " & _
            vbNewLine & "Let me be the first to congratulate you on your offer!"

  DoCmd.SendObject , "", "", rs![Email], "", "", "Congratulations on your hire!",  message , False, ""
End Sub

您创建了一个包含两个文本框的表单,即txtFirstName和txtLastName。然后创建一个按钮并将此代码放入按钮单击事件:

请尝试以下VBA代码:

Sub btnSend_Click()
  Dim message as String    
  'Make sure to handle the case if textboxes are empty

  message = "Dear " & txtFirstName.value & " " & txtLastName.value & ", " & _
            vbNewLine & "Let me be the first to congratulate you on your offer!"

  DoCmd.SendObject , "", "", rs![Email], "", "", "Congratulations on your hire!",  message , False, ""
End Sub

您在VBA中手动编辑的到底是什么?您是否将名称直接复制粘贴到代码中?在我看来,您需要的是一个复杂的字符串操作函数,它可以根据需要将消息字符串组合在一起。这确实是可能的。给我们一个例子,你有什么,如果你需要更多的帮助,你希望它是什么。我有的东西看起来像
DoCmd.SendObject,“,”,rs![电子邮件],“,”,“祝贺您被录用!”,“亲爱的[名字][姓氏]&vbNewLine&让我首先祝贺您的录用!”,False,“
我会修改[名字]和[姓氏]以匹配每个收件人的姓名,而MessageText字段的其余部分将保持不变。我的目标是创建一种表单,在该表单中,我可以键入通用邮件内容,并使其自动换行&根据数据库中收件人的信息自动填写唯一字段。您在VBA中手动编辑的具体内容是什么?您是否将名称直接复制粘贴到代码中?在我看来,您需要的是一个复杂的字符串操作函数,它可以根据需要将消息字符串组合在一起。这确实是可能的。给我们一个例子,你有什么,如果你需要更多的帮助,你希望它是什么。我有的东西看起来像
DoCmd.SendObject,“,”,rs![电子邮件],“,”,“祝贺您被录用!”,“亲爱的[名字][姓氏]&vbNewLine&让我首先祝贺您的录用!”,False,“
我会修改[名字]和[姓氏]以匹配每个收件人的姓名,而MessageText字段的其余部分将保持不变。我的目标是有某种形式,我可以在其中键入通用消息内容,并使其自动换行&根据数据库中收件人的信息自动填写唯一字段。对不起,我认为我没有正确解释我的意图。我们的想法是从表条目中动态提取动态字段,如FirstName和LastName,而消息本身有一个输入框,可以自动将段落分隔符识别为vbNewLine,并将所有这些输入到MessageText字段中。对不起,我想我没有正确解释我的意图。我们的想法是从表条目中动态提取动态字段,如FirstName和LastName,而消息本身有一个输入框,可以自动将段落分隔符识别为vbNewLine,并将所有这些输入到MessageText字段中。对不起,我想我没有正确解释我的意图。其思想是动态地从表条目中提取动态字段,如FirstName和LastName,而消息本身有一个输入框,可以自动将段落分隔符识别为vbNewLine,并将所有这些输入到MessageText字段中。那么,为什么需要输入框呢?我们可以循环记录集,在我上面的代码中,用记录集的适当字段替换inputbox。对于新行和回车,您不需要输入框。但是如果你想在输入框上决定,我们可以编写逻辑,但我看不出有任何这样的意图。输入框背后的想法是为我的同事降低编辑VBA代码的难度。他们不是技术性很强的人,我担心他们会因为不得不在段落的分界处换行太晚。如果有一个输入字段,他们可以在其中键入他们的标准消息,并让它使用vbNewLines自动解析输入,那么他们就更有可能接受自动电子邮件解决方案。这个记录集循环就是我要找的。非常感谢。对不起,我想我没有正确地解释我的意图。其思想是动态地从表条目中提取动态字段,如FirstName和LastName,而消息本身有一个输入框,可以自动将段落分隔符识别为vbNewLine,并将所有这些输入到MessageText字段中。那么,为什么需要输入框呢?我们可以循环记录集,在我上面的代码中,用记录集的适当字段替换inputbox。对于新行和回车,您不需要输入框。但是如果你想在输入框上决定,我们可以编写逻辑,但我看不出有任何这样的意图。输入框背后的想法是为我的同事降低编辑VBA代码的难度。他们不是很专业的人,我担心他们太专业了