Access – Como retornar resultado de um sendmail?
-
13-12-2019 - |
Pergunta
Agradecemos antecipadamente por qualquer ajuda.Tenho o seguinte código que ao ser clicado cria um email, insere o corpo e o email do cliente e anexa uma cópia da fatura.Tenho duas dúvidas, uma é possível alterar o nome do arquivo anexado, no momento é só a faturaF.pdf que poderia ser a referência da entrega.E em segundo lugar, é possível capturar o resultado do envio de e-mail?Eu sei que se o e-mail não for enviado, apenas fechado, o acesso coloca uma caixa de informações dizendo "A ação de envio do objeto foi cancelada", quero pegar a confirmação "enviado com sucesso" e adicionar a data de hoje em uma caixa [invoiceemailed].Obrigado a todos antecipadamente por sua ajuda :)
Private Sub emailinvoiceF_Click()
On Error GoTo Err_emailinvoiceF_Click
If MsgBox("Email the invoice?", vbYesNo) = vbYes Then
Dim strMessage
strMessage = "Dear " & First & " " & Last & "," _
& vbCrLf & vbCrLf & "Thank you for your order: (" & DeliveryID & "), please find attached invoice." _
& vbCrLf & vbCrLf & "If you require any further information please do not hesitate to contact us." _
& vbCrLf & vbCrLf & "Kind Regards," _
& vbCrLf & vbCrLf & "SMI Hardwoods" _
& vbCrLf & vbCrLf & "Tel: 01206 396725" _
& vbCrLf & vbCrLf & "www.smi-hardwoods.com" _
Dim stDocName As String
stDocName = "InvoiceF"
DoCmd.SendObject acReport, stDocName, acFormatPDF, [E-mail address], , , "SMI Hardwoods Invoice Ref:" & DeliveryID & ".pdf", strMessage
End If
Exit_emailinvoiceF_Click:
Exit Sub
Err_emailinvoiceF_Click:
MsgBox Err.Description
Resume Exit_emailinvoiceF_Click
End Sub
Solução
DoCmd.SendObject comando é muito limitado.Não permite anexar arquivos do disco.Devido a esta limitação, você não tem controle sobre o nome do arquivo e o número de arquivos a serem anexados usando DoCmd.SendObject.
Você pode achar este artigo útil: http://msdn.microsoft.com/en-us/library/aa167323(v=office.11).aspx.
eu usei Outlook.Aplicativo objeto no passado e achei que estava OK.Permite ter alguma interação do usuário antes de enviar um email.Além disso, ele vai direto para o Outlook, portanto o rastreamento pode ser mais fácil.Essa abordagem tem seus próprios contras, no entanto.
De acordo com sua pergunta sobre a mensagem de sucesso, você pode adicionar o seguinte ao seu código:
....
DoCmd.SendObject acReport, stDocName, acFormatPDF, [E-mail address], , , "SMI Hardwoods Invoice Ref:" & DeliveryID & ".pdf", strMessage
'Display success message
MsgBox("Successfully sent on: " & Date())
End If
Exit_emailinvoiceF_Click:
Exit Sub
...