2013-06-24 4 views
0

Я хочу отправить электронную почту через интерфейс доступа к Microsoft. пользователю просто нужно выбрать получателей в списке и нажать одну кнопку, чтобы отправить электронное письмо нескольким получателям. Я не хочу, чтобы интерфейс Lotus Notes появился пользователю. у меня нет никаких проблем в использовании этой команды для отправки по электронной почте:не удалось отправить электронное письмо нескольким получателям через Microsoft Access 2007, отправлено только первым получателям

DoCmd.SendObject objecttype:=acSendTable, _ 
objectname:=strDocName, outputformat:=acFormatXLS, _ 
To:=strEmail, Subject:=strMailSubject, MessageText:=strMsg, EditMessage:=False 

но те, метод не является то, что я ищу, потому что он будет появляться на экране при отправке по электронной почте. хотя я установил EditMessage: = False.

У меня есть процедура для отправки электронной почты из доступа через ноты лотоса в фоновом режиме. процедура выполняется нормально с одним получателем, но она будет отправлять электронную почту только одному получателю, если я выберу несколько получателей. Я думаю, что проблема имеет какое-то отношение к строке получателей. получателей строки Пример:

eg1 : [email protected], [email protected], [email protected] 

eg2 : [email protected]; [email protected]; [email protected] 

будет отправлено письмо к первому получателю только

вот процедура суб:

Sub SendNotesMail(Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean) 

Dim Maildb As Object 'The mail database 
Dim UserName As String 'The current users notes name 
Dim MailDbName As String 'The current users notes mail database name 
Dim MailDoc As Object 'The mail document itself 
Dim AttachME As Object 'The attachment richtextfile object 
Dim Session As Object 'The notes session 
Dim EmbedObj As Object 'The embedded object (Attachment) 

Set Session = CreateObject("Notes.NotesSession") 

'Get the sessions username and then calculate the mail file name 
UserName = Session.UserName 

MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf" 

'Open the mail database in notes 
Set Maildb = Session.GETDATABASE("", MailDbName) 

If Maildb.ISOPEN = False Then 
    Maildb.OPENMAIL 
End If 

'Set up the new mail document 
Set MailDoc = Maildb.CREATEDOCUMENT 

MailDoc.Form = "Memo" 
MailDoc.sendto = Recipient 
MailDoc.Subject = Subject 
MailDoc.Body = BodyText & vbCrLf & vbCrLf 
MailDoc.PostedDate = Now() 
MailDoc.SAVEMESSAGEONSEND = SaveIt 

'Set up the embedded object and attachment and attach it 
If Attachment <> "" Then 
    Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment") 
    Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment") 
    MailDoc.CREATERICHTEXTITEM ("Attachment") 
End If 

'Send the document 
MailDoc.send 0, Recipient 

'Clean Up 
Set Maildb = Nothing 
Set MailDoc = Nothing 
Set AttachME = Nothing 
Set Session = Nothing 
Set EmbedObj = Nothing 

End Sub 

Вызов процедуры электронной почты на кнопку мыши события:

Private Sub cmdSendEmail_Click() 

Dim EmailSubject As String, EmailAttachment As String, EmailRecipient As String, EmailBodyText As String, EmailSaveIt As Boolean 

EmailSubject = Me.txtSubject.Value 
EmailAttachment = Me.txtAttachment.Value 
EmailRecipient = Me.txtSelected.Value 
EmailBodyText = Me.txtMessage.Value 
EmailSaveIt = True 

Call SendNotesMail(EmailSubject, EmailAttachment, EmailRecipient, EmailBodyText, EmailSaveIt) 

End Sub 

и вот как я беру множественную полосу получателя г из выпадающего списка:

Private Sub lstEmail_Click() 

On Error Resume Next 
Dim varItem As Variant 
Dim strList As String 

With Me.lstEmail 
    If .MultiSelect = 0 Then 
    Me.txtSelected = .Value 
    Else 
    For Each varItem In .ItemsSelected 
     strList = strList & .Column(0, varItem) & ", " 
    Next varItem 
    strList = Left$(strList, Len(strList) - 2) 'eliminate ", " at the end of recipient's string 
    Me.txtSelected.Value = strList 

    End If 
End With 
End Sub 

я действительно не могу использовать метод docmd.sendObject, потому что он по-прежнему появляются на экране, хотя я установить EditMessage: = False. Я не знаю, работает ли это нормально с другой электронной почтой, но мои лотосовые примечания 8.5 не работают с этим docmd.sendObject для отправки электронной почты на задний план. любая помощь или предложение?

ответ

3

Поле получателей должно быть массивом (списком). Можете ли вы использовать split для создания массива?

MailDoc.sendto = split(Recipient, ", ") 
+0

спасибо! теперь он отлично работает. –

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