/////////////////////////////////////////////////
//インクルード
#include "hspsock.as"
/////////////////////////////////////////////////
//定義
#define SOCKET_ID 1000
#define PORT 25
/////////////////////////////////////////////////
//関数登録
#uselib "user32.dll"
#func SendMessageA "SendMessageA" int,int,int,int
#func EnableWindow "EnableWindow" int,int
/////////////////////////////////////////////////
//変数
sdim serv_addr , 1024
sdim send_addr , 1024
sdim recv_addr , 1024
sdim subject , 1024
sdim log , 1024
sdim mb_data , 1024
sdim log_data , 1024
sdim string , 1024
/////////////////////////////////////////////////
//ウィンドウ作成
screen 0 , 400 , 320
title "メール送信 サンプル"
color 224,224,224 : boxf
color : font "" , 10
pos 5 , 5 : mes "SMTPサーバ"
pos 5 , 25: mes "送信元メール"
pos 5 , 45: mes "送信先メール"
pos 5 , 65: mes "件名"
pos 70 , 0 : input serv_addr , 280 , 20 , 1024 //0
pos 70 ,20 : input send_addr , 280 , 20 , 1024 //1
pos 70 ,40 : input recv_addr , 280 , 20 , 1024 //2
pos 70 ,60 : input subject , 280 , 20 , 1024 //3
objsize 50 , 80 : pos 350,0
button "送信" , *send_mail //4
pos 0 , 80 : mesbox mb_data , 400 , 120 //5
pos 5,205 : mes "通信ログ"
pos 0 , 220 : mesbox log_data,400,100,4 //6
hlog = objinfo(6,2)
stop
/////////////////////////////////////////////////
//送信(string)と受信(log)のサブルーチン
*send_recv
sockput string+"¥n" , SOCKET_ID
log="送信 : "+string : gosub *log_set
wait 100
sockcheck SOCKET_ID
if stat!=0 : return
sockget log , 1024 , SOCKET_ID
log="受信 : "+log : gosub *log_set
return
/////////////////////////////////////////////////
//サーバからデータ取得
*send_mail
EnableWindow objinfo(4,2),0
//ソケットの初期化と接続
log="接続中 : "+serv_addr
gosub *log_set
sockopen SOCKET_ID , serv_addr , PORT
if stat != 0{
log="接続エラー!"
gosub *log_set
stop
}
sockget log , 1024 , SOCKET_ID
log="接続完了: "+log : gosub *log_set
//SMTPサービスの開始
string="EHLO "+serv_addr
gosub *send_recv
//送信元メールアドレスを送信
string="MAIL FROM :"+send_addr
gosub *send_recv
//送信先メールアドレスを送信
string="RCPT TO :"+recv_addr
gosub *send_recv
//データ送信の開始準備
string="DATA"
gosub *send_recv
//X-Mailer: 送信
string="X-Mailer : HSPSOCKET-TEST-Mailer"
gosub *send_recv
//Subject: 送信
string="Subject:"+subject
gosub *send_recv
//空行 送信
string="" : gosub *send_recv
//本文送信
string=mb_data
gosub *send_recv
//データ送信の終了
string="."
gosub *send_recv
//SMTPサービスの終了
string="QUIT"
gosub *send_recv
//ソケットを切断
sockclose SOCKET_ID
log="切断完了"
gosub *log_set
sock_flag=0
EnableWindow objinfo(4,2),1
stop
/////////////////////////////////////////////////
//ログ(log)の書き込み
*log_set
string=strf("[%02d:",gettime(4))
string+=strf("%02d:",gettime(5))
string+=strf("%02d] ",gettime(6))
notesel log_data
noteadd string+log , -1
objprm 6 , log_data
SendMessageA hlog,0xBA,0,0
SendMessageA hlog,0xB6,0,stat
return |
挨拶というか、そんな感じのをしにきました。
このブログいいですね。サンプルも役に立つものばかりです。ステータスバーやツールチップ作成、役に立ちました。
これからもちょくちょく訪問させていただきます。それでは。
ご訪問ありがとうございます。
サンプル、役立って良かったです。