sample\hspinet\sendmail.hsp » Plain Format
#include "hspinet.as"
;
; メール送信サンプル
; ※すべてのメールサーバーに対応しているわけではありません
; ※メール本文はSJIS文字列として送信されます
;
#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" : return 1
sockput "ehlo "+svradr+"\n",0
svrwait
if rescode!="250" : return 2
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" : return 5
sockput "mail from:"+adrfrom+"\n",0
svrwait
if rescode!="250" : return 6
sockput "rcpt to:"+adrto+"\n",0
svrwait
if rescode!="250" : return 7
sockput "data\n",0
svrwait
if rescode!="354" : return 8
srcbuf=subject
b64encode@ res,srcbuf
sockput "from:"+adrfrom+"\nto:"+adrto+"\nsubject:=?SHIFT_JIS?B?"+res+"?=\n\n"+txdata+"\n.\n",0
svrwait
if rescode!="250" : return 9
sockput "quit",0
return 0
#global
; メール送信テスト
;
syscolor 15
boxf
color 0,0,0
sdim m_adr,256
sdim m_user,256
sdim m_pass,256
sdim m_from,256
sdim m_to,256
sdim m_title,256
sdim m_text,$4000
m_port=587
m_adr="smtp.mail.yahoo.co.jp"
m_from="????@yahoo.co.jp"
m_to="????@yahoo.co.jp"
m_title="メール送信テストです"
m_text="本文です。"
objsize 320,24
mes "SMTPサーバー"
input m_adr
mes "SMTPポート"
input m_port
mes "認証ユーザー名"
input m_user
mes "認証パスワード"
input m_pass
mes "送信元アドレス"
input m_from
mes "送信先アドレス"
input m_to
mes "タイトル"
input m_title
mes "本文"
mesbox m_text,640,160
pos 490,10:objsize 140,140
button "メール送信",*go
stop
*go
setmail m_adr, m_port, m_user, m_pass
sendmail m_from, m_to, m_title, m_text
ires=stat
if ires=0 {
dialog "メールを送信しました。"
} else {
dialog "エラーが発生しました。(エラー="+res+")"
}
stop