QA@IT

basp21でのメール送信

6710 PV

excel VBAでbasp21を利用してメール送信しようとしています。

過去の記事http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=48088&forum=7
で、本文をMIME形式で付加するとありますが
具体的にどういう記述にするのでしょうか?

mailto文にcontent-typeを下記のように指定したときに、本文をどういう記述にすればよいのでしょうか?

'宛先
mailto = ">Content-Type: multipart/mixed; boundary=xxxx" & vbTab & eMail

'送信者
mailfrom = mSender & vbTab & id & ":" & pass
'件名
subj = "mmm"


'本文
body = "<HTML><BODY>" & vbCrLf & "<H1>こんちは</H1>" & vbCrLf & "</BODY></HTML>" & "abc"


file = "d:\mydoc\macro\mysql.txt"

'メール送信
msg = bobj.SendMail(svname, mailto, mailfrom, subj, body, file)
  • 回答に追記しました。 -

回答

デューンの回答

ためしてはいませんが、本文をきちんとMIME形式で付加してあげれば、
multipart/mixedも可能なようです。

文字コードや必要に応じてBASE64変換してあげる。
Outlook Expressのメッセージのソースで見れるような形式で本文を構築してあげればいけるのではないでしょうか。

http://www.hi-ho.ne.jp/babaq/mhead.html
http://www.hi-ho.ne.jp/babaq/basp21.html#0039

はみましたか?

http://www.hi-ho.ne.jp/babaq/mhead.htmlContent-Type: にあるように、Content-Typeをmultipart/mixedにしてあげれば(これはもうなってますね)、あとは本文に Base64エンコードした文字列を設定するだけです。

Content-Type:
multipart/mixed 形式を直接指定することもできます。 この場合、本文はキチンとMIME形式で指定すること。

mailto = ">Content-Type: multipart/mixed; boundary=xxxx" & vbTab & "hoge@hoge.com" 

Base64エンコードへの変換はもう一方のリンクを見てください。
( 古いメーラーへの対応も考えるなら 1行あったりの文字数を60桁程度になるように改行を入れた方がいいかもしれません。 )
Outlook Expressはもうありませんが、 HTML形式のメールのソースを何かのメーラーで見てみると参考になるかもしれません。

追記

(2)

body = "<HTML><BODY bgcolor=#008284><H1>" & bobj.Base64("あいうえお") & "</H1>" & bobj.Base64("かきくけこ") & "</BODY></HTML>"

ではなくて

body = bobj.Base64("<HTML><BODY bgcolor=#008284><H1>あいうえお</H1>かきくけこ</BODY></HTML>")

してみてください。また、メールのソースは自分のプログラムで送ったものではなく別の製品メーラーでHTML形式か添付ファイル付きのメールを送ってみて、それを受信したメールを見てほしいという意味でした。
(間違っているかもしれない自分のプログラムは参考にはなりませんので、信頼おける別の製品を参考にしてみるという意味ですね。)

編集 履歴 (1)
  • ありがとうございます。
    メーラーから実行したときと、excel vbaから実行したときのメールソースを見比べてみると、一筋縄では、いかないみたい。
    いったんクローズして模索しようと思います。
    -

ありがとうございます。
いまひとつ理解不足なんですが、
エンコード変換ということで
たとえば、multipart/mixedに指定したときは、(1)を(2)のようにして

(1)body = "<HTML><BODY bgcolor=#008284><H1>あいうえお</H1>かきくけこ</BODY></HTML>"
 (2)body = "<HTML><BODY bgcolor=#008284><H1>" & bobj.Base64("あいうえお") & "</H1>" & bobj.Base64("かきくけこ") & "</BODY></HTML>"

(1)をhtml形式で指定したときのメールソースは、

<HTML><BODY bgcolor=#008284><H1>$B$"$$$&$($*(B</H1>$B$+$-$/$1$3(B</BODY></HTML>

であれば、multipart/mixedで指定し、(2)で実行したときのメールソースが上記のソースになるという
理解をしましたが、実際、実行するとメールソースは異なり、

<HTML><BODY bgcolor=#008284><H1>gqCCooKkgqaCqA==</H1>gqmCq4Ktgq+CsQ==</BODY></HTML>

になっています。
どこがまずいんでしょう?

編集 履歴 (1)
ウォッチ

この質問への回答やコメントをメールでお知らせします。