0

Microsoft アクセス インターフェイスを介してサイレント モードで電子メールを送信したい。ユーザーはリストボックスで受信者を選択し、1 つのボタンをクリックするだけで複数の受信者に電子メールを送信できます。Lotus Notes インターフェイスをユーザーに表示したくありません。これらのコマンドを使用して電子メールを送信することに問題はありません。

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

しかし、これらの方法は、メールの送信中に画面に表示されるため、私が探しているものではありません。私は EditMessage:=False を設定しましたが。

バックグラウンドで Lotus Notes を介してアクセスからメールを送信する手順があります。手順は単一の受信者で正常に実行されますが、複数の受信者を選択した場合、1 人の受信者にのみ電子メールが送信されます。問題は受信者の文字列に関係していると思います。受信者文字列の例:

eg1 : duwey@yahoo.com, mridzuan@gmail.com, mridzuan@yahoo.com

eg2 : duwey@yahoo.com; mridzuan@gmail.com; mridzuan@yahoo.com

メールは最初の受信者のみに送信されます

サブ手順は次のとおりです。

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

EditMessage:=False を設定しても画面に表示されるため、実際には docmd.sendObject メソッドを使用できません。他の電子メールで問題なく動作するかどうかはわかりませんが、私の lotus-notes 8.5 は、バックグラウンドで電子メールを送信する docmd.sendObject では動作しません。助けや提案はありますか?

4

1 に答える 1