2016-09-15 785 views
1

私がしたいことは、自動的にThunderbirdアカウントから電子メールを送信することです。ユーザーは、電子メールの[送信]ボタンを押す必要はありません。Excel VBAでThunderbirdから電子メールを自動的に送信

私はCDOを使用しようとしましたが、問題は送信元のアカウントのユーザー名とパスワードを入力する必要があることです。このマクロは複数の異なるアカウントから使用されるため、各ユーザー名とパスワードの入力は実現できません。私はThunderbirdからユーザ名、パスワード、smtpサーバを検索することがあったとしてもCDOを使うことができましたが、CDOなしでこれを達成できるはずのコードが好きです。

実際にこれを達成するために私が見る(そしてどこにでも)唯一のコードです。

Sub Thunderbird() 

Dim thund As String  
Dim email As String 
Dim cc As String 
Dim bcc As String 
Dim subj As String 
Dim body As String  

email = "[email protected]" 
cc = "[email protected]" 
bcc = "[email protected]" 
subj = "Subject" 
body = "body text" 

thund = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" 
thund = thund & " -compose " & Chr$(34) & "mailto:" & email & "?" 
thund = thund & "cc=" & Chr$(34) & cc & "?" 
thund = thund & "bcc=" & Chr$(34) & bcc & "?" 
thund = thund & "subject=" & Chr$(34) & subj & Chr$(34) 
thund = thund & "body=" & Chr$(34) & body 

Call Shell(thund, vbNormalFocus) 
SendKeys "^+{ENTER}", True 

End Sub 

今の時点で、フィールドccbccsubj、およびbodyは全て正しく認識されています。問題は、すべてが最初のフィールドの最後に追加されることです。たとえばコードが現在のところでは、ccがccフィールドに入りますが、bcc,subj、およびbodyはすべてThunderbirdのccフィールドにccに追加されます。

私は ccアウトコメント場合は、 bccが正しいフィールドに配置され

が、subjbodyは、サンダーバードのBCCフィールドにbccに追加されます。私はccbccアウトコメント場合

、その後、subjは正しいフィールドに入れますが、サンダーバードの対象分野にsubjbody付加されます。

基本的に私は、これらの各行の最後に正しいコードを追加する必要があります。私は"?"Chr$(34)の両方を試してみました。

最後に、SendKeys "^+{ENTER}", Trueはまったく機能しません。これは、すべてのパラメータがThunderbirdの正しいフィールドに入れられていないことが原因である可能性がありますが、私はそれが動作しないため、わかりません。 Thunderbirdからの電子メールは表示されますが、このコードは想定されているように電子メールを送信していません。

SOLUTION(@zedfoxusによって提供される)

Sub Thunderbird() 

Dim thund As String  
Dim email As String 
Dim cc As String 
Dim bcc As String 
Dim subj As String 
Dim body As String  

email = "[email protected]" 
cc = "[email protected]" 
bcc = "[email protected]" 
subj = "Subject" 
body = "body text" 

thund = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" & _ 
     " -compose " & """" & _ 
     "to='" & email & "'," & _ 
     "cc='" & cc & "'," & _ 
     "bcc='" & bcc & "'," & _ 
     "subject='" & subj & "'," & _ 
     "body='" & body & "'" & """" 

Call Shell(thund, vbNormalFocus) 
Application.Wait (Now + TimeValue("0:00:03")) 
SendKeys "^{ENTER}", True 

End Sub 
+0

[Excelマクロ送信Thunderbird](https:// stackoverflow。com/questions/31283948/excel-macro-through-thunderbird/31284639#31284639) – 0m3r

答えて

3

あなたはかなり接近していました。試してみてください:

Public Sub SendEmail() 
    Dim thund As String 
    Dim email As String 
    Dim cc As String 
    Dim bcc As String 
    Dim subj As String 
    Dim body As String 

    email = "[email protected]" 
    cc = "[email protected]" 
    bcc = "[email protected]" 
    subj = "Testing" 
    body = "Testing" 

    thund = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe " & _ 
      "-compose " & """" & _ 
      "to='" & email & "'," & _ 
      "cc='" & cc & "'," & _ 
      "bcc='" & bcc & "'," & _ 
      "subject='" & subj & "'," & _ 
      "body='" & body & "'" & """" 

    Call Shell(thund, vbNormalFocus) 
    SendKeys "^+{ENTER}", True 

End Sub 

例はhttp://kb.mozillazine.org/Command_line_arguments_(Thunderbird)です。

サンダーバード= 'ジョン@ example.com、キャシー@ example.com'、CC = 'ブリトニー@ example.com' に-compose」、件名= '夕食'、ボディ= 'どのように今夜の夕食はどうですか? 」、添付ファイル= 'C:\一時\のinfo.doc、C:\一時\のfood.doc'」

例は-compose後、我々は、二重引用符で私たちの情報を入力する使用する必要があることを示しています。各パラメータはコンマで区切られています。命名法はparameter='value[,value]' [,parameter='value[,value]]...です。

+0

ありがとうございます!残念ながら、SendKeysビットはまだ動作しません。電子メールは正しく表示されますが、SendKeysは電子メールを送信しません。実際にはウィンドウを最小化するだけです。 – user2951249

+0

お持ちのWindowsのバージョンは?どのバージョンのExcelをお持ちですか? Office 365 ProPlusとSendKeysはWindows 7のThunderbirdと完全に連携しています。 – zedfoxus

+0

'SendKeys"^+ {ENTER} "、True'の代わりに' Application.SendKeys "%fl"、True'を試してください。それがうまくいかない場合は、 'SendKeys"^+〜 "、True'を試してください – zedfoxus

関連する問題