【问题标题】:Sending email with flag not working发送带有标志的电子邮件不起作用
【发布时间】:2017-09-20 20:56:22
【问题描述】:

我有一个 Outlook 2007 宏,可以发送带有收件人标志的电子邮件,但它不再起作用。

我错误地更改了代码,现在它不再起作用了。

收件人在 TO DO 中看不到这封电子邮件,它在电子邮件列表中也没有显示为红色。

Sub fff()
    Dim outApp As Object
    Dim OutMail As Object

    Dim datDue As Date
    datDue = DateAdd("d", 7, Date)


     Set OutMail = outApp.CreateItem(0)

    With OutMail
        .To = "me@yyy.com"
        .Subject = "test"
        .HtmlBody = "msg"

        .Importance = olImportanceHigh
        .FlagStatus = olFlagMarked
        .FlagRequest = "Follow up"
        .ReminderTime = datDue & " 17:00 PM"
        .ReminderOverrideDefault = True
        .ReminderSet = True
        .TaskStartDate = Date
        .TaskDueDate = datDue
        .Save
        .Send

    End With

End Sub

【问题讨论】:

  • 你从哪里运行代码? Excel?
  • 您应该在收件箱中查看当前的rules。有一个默认规则从传入的电子邮件中去除类别(假设该规则对发件人有意义,但对收件人没有意义)。
  • 您好,环境和上周一样——代码没有为收件人做红色高亮、标记和提醒触发。
  • 可能不是 VBA 问题。在有“收件人标志”的地方手动发送邮件,以查看该标志是否保留在邮件上。

标签: vba outlook outlook-2007


【解决方案1】:

您的变量 OutApp 没有用,应该是 Application,因为您直接在 Outlook 中使用它。

我只是测试了该代码,它对我很有效(Outlook 2013):

Sub wittman()
    Dim OutMail As MailItem
    Dim datDue As Date

    datDue = DateAdd("d", 7, Date)
    Set OutMail = Application.CreateItem(0)

    With OutMail
        .To = "test@mail.com"
        .Subject = "test"
        .HTMLBody = "msg"

        .Importance = olImportanceHigh
        .FlagStatus = olFlagMarked
        .FlagRequest = "Follow up"
        .ReminderTime = datDue & " 17:00 PM"
        .ReminderOverrideDefault = True
        .ReminderSet = True
        .TaskStartDate = Date
        .TaskDueDate = datDue
        .Save
        .Send
    End With 'OutMail
End Sub

【讨论】:

  • 它不起作用 对@R3uK 没有帮助。你能描述一下它是如何不工作的吗(我看到一条错误消息,电子邮件出现但没有发送,等等)?
  • 经过测试的 Outlook 2010。有效。我看不到 2007 年不支持的任何明显内容。
  • 代码应该以红色突出显示,并在他们的 Outlook 中提醒收件人 - 而不是我。它确实做到了但愚蠢的我我改变了一些东西但它不起作用 - 它只是发送电子邮件,收件人会将电子邮件视为普通电子邮件,并且不会为他们触发提醒并且他们邮箱中的电子邮件没有被标记。
  • @wittman :对不起,伙计,我没有 Office 2007,所以我试图找到一些有关此的信息,但没有发现任何有用的信息...我无法弄清楚与Outlook 2007 可能会导致此问题...抱歉,我无法为您提供更多帮助!
  • 感谢您的宝贵时间。
【解决方案2】:

您可以将任务发送给委托人:

Sub AssignTask() 
 Dim myItem As Outlook.TaskItem 
 Dim myDelegate As Outlook.Recipient 
 Set MyItem = Application.CreateItem(olTaskItem) 
 MyItem.Assign 
 Set myDelegate = MyItem.Recipients.Add("Eugene Astafiev") 
 myDelegate.Resolve 
 If myDelegate.Resolved Then 
   myItem.Subject = "Prepare Agenda for Meeting" 
   myItem.DueDate = Now + 30 
   myItem.Display 
   myItem.Send 
 End If 
End Sub

在运行此示例之前,不要忘记将“Eugene Astafiev”替换为有效的收件人姓名。

您也可以使用 MailItem 类的MarkAsTask 方法将MailItem 对象标记为任务并为该对象分配任务间隔。调用此方法会设置其他几个属性的值,具体取决于MarkInterval 中提供的值。有关通过指定 MarkInterval 设置的属性的更多信息,请参阅OlMarkInterval Enumeration

How to set a flag to follow up using VBA 文章可能对您有所帮助。

【讨论】:

  • 嗨,MarkAsTask 用于发送或接收 - 我想标记为收件人的任务 - 在他们的邮箱上而不是在我的邮箱上。
  • 然后尝试使用任务项。查看更新的答案。
  • 您好,任务的问题是他们必须接受任务。我想做的是为他们设置一个提醒 - 这样他们就不会抱怨他们必须做的额外事情。
猜你喜欢
  • 2015-06-06
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 2012-08-01
相关资源
最近更新 更多