1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| Sub envoi_alerte_mail_visa()
'déclaration et affectation de la variable objet de connexion
Dim Cn As ADODB.Connection
Set Cn = CurrentProject.Connection
'déclaration du recordset
Dim monmail As New ADODB.Recordset
' V_Liste_destinataires_ExpiryVisa est une query (view) qui sort un seul champs EmailAddress
monmail.Open "V_Liste_destinataires_ExpiryVisa", Cn, adOpenStatic, adLockReadOnly
Dim nbrdemails As Integer
Dim message As String
Dim maliste As String
Dim malistemoinsun As String
Dim longueurmalisteemails As Integer
' nbrdemails = monmail.RecordCount vérification du nombre d'adresses mail / par rapport au résultat de la query
' msgbox nbrdemails ça fonctionne !
'boucle pour concaténer les adresses email obtenues dans le recordset
While Not monmail.EOF
maliste = maliste & monmail.Fields("EmailAddress") & ";" 'séparation par ";" entre les adresses emails (utilisation outlook)
monmail.MoveNext
Wend
'PROBLEME la liste obtenue commence par ";" et plante l'envoi, pour supprimer le premier ";"
'je passe par ...
longueurmalisteemails = Len(maliste)
malistemoinsun = Right(maliste, longueurmalisteemails - 1)
'MsgBox malistemoinsun vérification de la liste obtenue => ça marche
'Corps du message du mail
message = "Hello" + Chr(13) + Chr(13)
message = message + "Please find herejoined Warning Visa List (expired visa or visa that will expire within 60 days)" + Chr(13)
message = message + "when necessary, please renew document and update database (+ hyperlink)" + Chr(13) + Chr(13)
message = message + "Thanks for your comprehension and help, regards."
On Error GoTo Send_Email_Err
'procédure pour envoyer un mail
'on envoi en document joint une vue (acServerView)
'ce document joint s'appelera "V_last_ListVisa_ExpiryDate_Check"
'ce sera un document de type Excel 2003
'la liste de diffusion est la variable malistemoinsun obtenur à partir du recordset
'en copie j'utilise ici des adresses fixes connues à l'avance donc pas besoin de calcul comme pour la diffusion
'le titre du message ser "Warning Visa List"
'le corps du message est travaillé à part pour ne pas faire trop long dans cette partie de la programmation
DoCmd.SendObject acServerView, "V_Last_List_Visa_ExpiryDate_Check", "Excel97-Excel2003Workbook(*.xls)", malistemoinsun, "toto@gamail.com; monsieur.patate@free.fr", "", "Warning Visa List", message, True, ""
Send_Email_Exit:
Exit Sub
Send_Email_Err:
MsgBox Error$
Resume Send_Email_Exit
Set Cn = Nothing 'libération explicite de la variable
End Sub |
Partager