2015-08-09 1 views
0

Я пытаюсь достичь:Проверка с помощью VBA в MSACCESS 2013, что электронная почта была отправлена ​​в Outlook, 2013

  1. письмо было отправлено в Outlook, «Отправленные» папка поэтому электронная почта не в «Исходящих» папка.

  2. электронной почты не вернулся из-за невозможности доставки (адрес электронной почты будет находиться в папке «Входящие» будет поставлять [email protected])

Следующий код используется для отправки по электронной почте от формы доступа через Outlook,:

Private Sub cmdEmail1_Click() 
Dim OutApp As Outlook.Application 
Dim OutMail As Outlook.MailItem 
Dim strBody As String 
Dim strPDF As String 
Dim strFolder As String 

Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(olMailItem) 

strBody = Me.txtSubject 
strPDF = Me.txtFile 
On Error Resume Next 
With OutMail 
    .To = Me.txtemail 
    .CC = "" 
    .BCC = Me.txtBBCemail 
    .Subject = Me.txtSubject 
    .Body = Me.txtMessage 
    .Recipients.ResolveAll 
' .SendUsingAccount = OutApp.Session.Accounts.Item(2)       '2nd email 
    .SentOnBehalfOfName = Me.txtFromEmail 
    .Attachments.Add  strPDF             'attachments 
    .Send 

End With 
Me.txtSent = "email was sent to Outlook " 

On Error GoTo 0 

Set OutMail = Nothing 
Set OutApp = Nothing 
End Sub 

Большое спасибо

Norbert

+0

Не могли бы вы прояснить, каков ваш вопрос? –

+0

Могу ли я предложить [SendGrid] (https://sendgrid.com/) вместо этого? См. [MS Access send email] (http://stackoverflow.com/a/30905348/138200) – Mitch

+0

Процедура cmdEmail1 вызывается из MSAccess. Цель состоит в том, чтобы проверить, находится ли электронная почта в папке «Отправленные» в Outlook без открытия Outlook отправив флаг в Access. (Я понимаю, что это не подтверждает, что получатель получил электронное письмо). Возникает вопрос: какую строку кода мне нужно добавить в процедуру MSAccess, чтобы убедиться, что письмо находится в папке «Отправленные», а не в папке «Исходящие». –

ответ

0

Оба они будут асинхронными, и вы сможете обработать уведомление в более поздний момент, секунды или даже минуты позже.

Я не думаю, что # 1 вам очень поможет - он только сообщает вам, что сеть не была отключена. Почему это имеет значение? Даже если он не работает, Outlook отправит сообщение позже.

Для # 2 все зависит от того, кто отправил NDR. Если это Exchange, вы сможете определить адрес плохого получателя. В противном случае вы можете просто получить сообщение, не имеющее хорошего способа выяснить, что такое проблемный получатель.

EDIT. Для Items.ItemAdd см. Следующее (с верхней части головы):

Dim OutApp As Outlook.Application 
Dim WithEvents SentItems As Outlook.Items 

sub SentItems_ItemAdd(Item As Object) 
    MsgBox Item.Subject 
end sub 

Private Sub cmdEmail1_Click() 

Dim OutMail As Outlook.MailItem 
Dim strBody As String 
Dim strPDF As String 
Dim strFolder As String 
Dim ns As Outlook.Namespacee 

if (OutApp Is Nothing) Then 
    Set OutApp = CreateObject("Outlook.Application") 
    set ns = OutApp.GetNamespace("MAPI") 
    ns.Logon 
    set SentItems = ns.GetDefaultFolder(olFolderSentMail).Items  
End If 
Set OutMail = OutApp.CreateItem(olMailItem) 

strBody = Me.txtSubject 
strPDF = Me.txtFile 
On Error Resume Next 
With OutMail 
    .To = Me.txtemail 
    .CC = "" 
    .BCC = Me.txtBBCemail 
    .Subject = Me.txtSubject 
    .Body = Me.txtMessage 
    .Recipients.ResolveAll 
' .SendUsingAccount = OutApp.Session.Accounts.Item(2)       '2nd email 
    .SentOnBehalfOfName = Me.txtFromEmail 
    .Attachments.Add  strPDF             'attachments 
    .Send 

End With 
Me.txtSent = "email was sent to Outlook " 

On Error GoTo 0 

Set OutMail = Nothing 
Set OutApp = Nothing 
End Sub 
+0

Это не обмен. –

+0

Я просто ищу подтверждение того, что письмо находится в папке «Отправленные», а не в «Пакете OutBox», если получатель не получит письмо, которое мы будем советом. Также мы можем отправить нам письмо по электронной почте, чтобы заверить нас, что письмо было отправлено по крайней мере. –

+0

См. Обновленный ответ выше –

Смежные вопросы