実行すると送信する文が表示されます。
実際に送信したメールを受信すると、
件名が文字化けし、
本文の最初の「이것은」以降が切れてしまいます。
どのようにすれば全文送信できるでしょうか。
よろしくお願いします。
以下コードになります。
#include "user32.as"
#include "hspinet.as"
;――――――――――――――――――――――――――――――――――――――――
;モジュール
;――――――――――――――――――――――――――――――――――――――――
;ユニコード部分
;小ワザ/Win32API関連/Unicodeのデータをmes命令のように表示する
;http://hspdev-wiki.net/?%BE%AE%A5%EF%A5%B6%2FWin32API%B4%D8%CF%A2%2FUnicode%A4%CE%A5%C7%A1%BC%A5%BF%A4%F2mes%CC%BF%CE%E1%A4%CE%A4%E8%A4%A6%A4%CB%C9%BD%BC%A8%A4%B9%A4%EB
;より転載
;
;メール送信部
;転載(転載元失念…)
;――――――――――――――――――――――――――――――――――――――――
/////////////////////////////
; ユニコード表示部
#module
#deffunc mesW var p1, local p //Unicode対応のAPIを使う
p.0 = ginfo_cx@, ginfo_cy@, ginfo_winx@, ginfo_winy@
DrawTextW@ hdc,varptr(p1),-1,varptr(p),0
return
#global
/////////////////////////////
;メール送信部
;HSP掲示板(失念…)より転載
#module
#include "hspsock.as"
#define SVR_TIMEOUT 100 ; タイムアウト時間(1/10sec)
#deffunc svrwait
sdim reslog,1024
repeat SVR_TIMEOUT
sockcheck 0
if stat=0 : break
await 10
loop
sockget reslog,1024,0
rescode=strmid(reslog,0,3)
return
#deffunc setmail str _p1, int _p2, str _p3, str _p4
; メールサーバーの設定(メールを送る前に設定してください)
; setmail "サーバーアドレス", ポート番号, "認証ユーザー名", "認証パスワード"
svradr = _p1
svrport = _p2
svruser = _p3
svrpass = _p4
return
#deffunc sendmail str adrfrom, str adrto, str subject, str txdata
; メール送信
; sendmail "送信元アドレス","送信先アドレス","タイトル","本文"
; (statが0ならば送信成功、1以上ならばエラーが発生しています)
; (先にsetmailでサーバーの設定を行なっておいてください)
sockopen 0,svradr,svrport
svrwait
if rescode!="220" : rescode@=rescode:return 1
/* EHLOコマンドを送信 */
sockput "ehlo "+svradr+"\n",0
svrwait
if rescode!="250" : return 2
/* AUTH LOGINコマンドを送信 */
sockput "auth login\n",0
svrwait
if rescode!="334" : return 3
/* ユーザー名を送信 */
srcbuf=svruser
b64encode@ res,srcbuf
sockput res+"\n",0
svrwait
if rescode!="334" : return 4
/* パスワードを送信 */
srcbuf=svrpass
b64encode@ res,srcbuf
sockput res+"\n",0
svrwait
if rescode!="235" : rescode@=rescode:return 5
/* MAIL FROMコマンドを送信 */
sockput "mail from:"+adrfrom+"\n",0
svrwait
if rescode!="250" : return 6
/* RCPT TOコマンドを送信 */
sockput "rcpt to:"+adrto+"\n",0
svrwait
if rescode!="250" : return 7
/* DATAコマンドを送信 */
sockput "data\n",0
svrwait
if rescode!="354" : return 8
data ="From:"+adrfrom+"\n"
data+="To:"+adrto+"\n"
data+="Subject: "+subject+"\n"
data+="Content-Type: text/plain; charset=UTF-8\n"
data+="Content-Transfer-Encoding: 8bit\n\n" ;ここまでヘッダ
data+=txdata ;本文
sockput data,0
sockput "\n.\n",0
svrwait
if rescode!="250" : return 9
/* QUITコマンドを送信 */
sockput "quit",0
return 0
#global
;――――――――――――――――――――――――――――――――――――――――
;本体
;――――――――――――――――――――――――――――――――――――――――
////設定
smtpServer="";サーバ
smtpPort=25;ポート番号
userID="";ユーザーID
pass="";パスワード
from="";送り元
to="";宛先
////ユニコードのメール内容を作成
#define SIZE 70
;65279=FEFF BOM
unicode_num.0=65279,51060,44163,51008,40,12371,12428,12399,41,32
unicode_num.10=50976,45768,53076,46300,51032,40,12518,12491,12467,12540
unicode_num.20=12489,12398,41,32,47928,51109,51077,45768,44620,63
unicode_num.30=40,25991,12391,12377,12363,65311,41,13,10,13
unicode_num.40=10,45348,44,40,12399,12356,12289,41,32,50976
unicode_num.50=45768,53076,46300,51077,45768,45796,46,40,12518,12491
unicode_num.60=12467,12540,12489,12391,12377,12290,41,0,0,0
////件名
sdim unicode_subject,SIZE*2
repeat 10
wpoke unicode_subject,cnt*2,unicode_num.cnt
loop
////本文
sdim unicode_text,SIZE*2
repeat SIZE
wpoke unicode_text,cnt*2,unicode_num.cnt
loop
////作った内容を表示
screen 0,640,480
font msmincho, 16
pos 0,0 :mes "件名":mesW unicode_subject
pos 0,100 :mes "本文":mesW unicode_text
redraw 1
////メール送信
setmail smtpServer,smtpPort,userID,pass
sendmail from,to,unicode_subject,unicode_text
dialog "送信しました"
end