2017-04-24 66 views
1

我有一个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 = "[email protected]" 
     .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 
+0

你从哪里运行代码? Excel中? – 0m3r

+0

您应该在收件箱中检查当前[规则](https://support.office.com/en-gb/article/Manage-messages-by-using-rules-80cc1f28-533d-4879-a8cc-ef83e9af0495) 。有一个默认的规则,从传入的电子邮件中删除类别(假设规则是指发件人,但不是收件人)。 –

+0

嗨,环境和上周一样 - 代码不会突出显示红色,标记和提醒触发收件人。 – wittman

回答

2

你的变量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 = "[email protected]" 
     .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 
+0

嗨,在我的Outlook(2007)它不起作用。 – wittman

+1

*它不起作用*没有帮助@ R3uK帮助你。你能描述它是如何不起作用的吗(我看到一个错误信息,电子邮件出现但没有发送等等)? –

+1

已测试Outlook 2010。我看不出任何明显的2007年不支持。 –

1

您可以发送任务委托:

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有帮助。

+0

嗨,MarkAsTask是发送或接收 - 我想标记为收件人的任务 - 在他们的邮箱不在我的。 – wittman

+0

然后尝试使用任务项目。查看更新后的答案。 –

+0

嗨,任务的问题是他们必须接受任务。我想要做的就是为他们设置提醒 - 这样他们就不会抱怨他们必须做的额外事情。 – wittman

相关问题