!十進BASIC でメール送信。 SECOND 2007/10/13 03:45:06 └!続き1 SECOND 2007/10/13 03:45:42
!十進BASIC でメール送信。 SECOND 2007/10/13 03:45:06 ツリーへ
!十進BASIC でメール送信。 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/10/13 03:45:06 | |
!十進BASIC でメール送信。
!先頃、白石先生に御紹介頂いた http://www.vector.co.jp/soft/win95/prog/se154742.html !を、使用します。 !DZSMTP.dll 付属:VB及びVBAでの使用サンプル を元に、 !十進BASIC へ調整。 !============================================================================= ! 原稿の用意 OPEN #1: NAME "mail.txt",ACCESS INPUT DO WHEN EXCEPTION IN LINE INPUT #1, IF MISSING THEN EXIT DO :w$ IF sSubject$=REPEAT$(" ",LEN(sSubject$)) THEN LET sSubject$= w$ !メール件名(空白でない先頭の一行) LET sBody$= sBody$ & w$ & CHR$(13) & CHR$(10) !メール本文 USE ! skip ctl-Z as extype:8011 END WHEN LOOP CLOSE #1 IF sBody$=REPEAT$(" ",LEN(sBody$)) OR sSubject$=REPEAT$(" ",LEN(sSubject$)) THEN PRINT "原稿が、空、又はスペース、改行のみです。" STOP END IF ! LET sSubject$= "件名:テストメール" ! 省略は null=chr$(0) ! LET sBody$= "本文:テストメール送信" ! 省略は null=chr$(0) LET sAttach$= CHR$(0) ! 添付ファイルパス、区切","で複数可、省略は null=chr$(0) !------------------ LET sFrom$= "abc.123@nifty.com" LET sTo$= "def.456@nifty.com" ! 区切り","で複数可、省略は null=chr$(0) LET sCc$= CHR$(0) ! 区切り","で複数可、省略は null=chr$(0) LET sBcc$= CHR$(0) ! 区切り","で複数可、省略は null=chr$(0) LET sReply$= CHR$(0) ! メール返信アドレス( From と異なる場合)省略は null=chr$(0) LET sSmtp$= "smtp.nifty.com" ! SMTPサーバー名 LET sDoma$= "ABC123" ! 自ドメイン名 ※半角英数字なら、No Check? (@nifty) LET pPop3$= "pop.nifty.com" ! POP3サーバー名 LET pAcou$= "abc12345" ! アカウント名 LET pPass$= "" ! パスワード ※空文字 ""→POPサーバー認証を省略する。 LET sSubject$= jis6226$( sSubject$) ! 件名のみ JIS漢字へ変換。しないと閲覧できず?(@nifty・Webメールだけが?) PRINT sSubject$ PRINT sBody$ !STOP CALL transMail !============================================================================= ! メールの送信 SUB transMail LET ret= LoadWinsock(1) !!! Winsockの生成及び初期化 PRINT "LoadWinsock(1): ";ret IF ret= -1 THEN PRINT "Socket:生成ができませんでした。" ELSE ! !!! アカウント名+パスワードでの、POP サーバーの認証は、 !!! 自分のプロバイダー・サーバーからの 送信なら、不要。(@nifty) ! IF pPass$<>"" THEN CALL POP3 IF ret<>-1 THEN ! LET hSocket= SMTPconnect( sSmtp$, sDoma$, 0) !!! SMTPサーバーへ接続、ポート番号(0=自動) PRINT "SMTPconnect: ";hSocket IF hSocket= -1 THEN LET msg0$="SMPTサーバーに接続できない、サーバー名等の確認。" CALL ErrMsg ELSE !!! メール送信 LET ret= SMTPsendMail( hSocket, sFrom$, sTo$, sCc$, sBcc$, sSubject$, sBody$, sAttach$, sReply$) PRINT "SMTPsendMail: ";ret IF ret= -1 THEN LET msg0$="メール送信失敗" CALL ErrMsg ELSE PRINT "メール送信完了" END IF ! 続き1 |
└!続き1 SECOND 2007/10/13 03:45:42 ツリーへ
Re: !十進BASIC でメール送信。 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/10/13 03:45:42 | |
! 続き1
END IF LET ret= SMTPdisConnect( hSocket) !!! SMTPサーバー接続解除 PRINT "SMTPdisConnect: ";ret ! END IF ! END IF LET ret= UnloadWinsock !!! Winsockの廃棄 PRINT "UnloadWinsock: ";ret PRINT "終了" END SUB !---------- SUB ErrMsg LET sMSG$= REPEAT$(CHR$(0),255) LET lErr= GetError(sMSG$) IF lErr<>0 THEN PRINT "Code :"; lErr; ": "; sMSG$(1:POS(sMSG$&CHR$(0),CHR$(0))-1) ELSE PRINT msg0$ END IF END SUB !---------- ! POP サーバーの認証。 SUB POP3 LET ret= -1 LET hSocket= POP3connect( pPop3$, 0) !!! POP3サーバーへ接続、ポート番号(0=自動) PRINT "POP3connect: ";hSocket IF hSocket= -1 THEN LET msg0$="POPサーバーに接続できない、サーバー名・接続ポートの確認。" CALL ErrMsg ELSE LET ret= POP3Login( hSocket, pAcou$, pPass$) !!! POP3サーバーの認証。 PRINT "POP3Login: ";ret IF ret= -1 THEN LET msg0$="POPサーバーが認証できない、アカウント名・パスワードの確認。" CALL ErrMsg END IF END IF LET cret= POP3disConnect( hSocket) !!! POP3サーバー接続解除 PRINT "POP3disConnect: ";cret END SUB END !--------------------------------------------------------------------- EXTERNAL FUNCTION LoadWinsock( err ) assign "DZSMTP.dll","DZLoadWinsock" END FUNCTION EXTERNAL FUNCTION POP3connect(sServerHost$, sPort) assign "DZSMTP.dll","DZPop3Connect" END FUNCTION EXTERNAL FUNCTION POP3Login(shnd, sUser$, sPassword$) assign "DZSMTP.dll","DZPop3Login" END FUNCTION EXTERNAL FUNCTION POP3disConnect(shnd) assign "DZSMTP.dll","DZPop3DisConnect" END FUNCTION EXTERNAL FUNCTION SMTPconnect( sServerHost$, sLocalHost$, sPort) assign "DZSMTP.dll","DZSmtpConnect" END FUNCTION EXTERNAL FUNCTION SMTPsendMail(hSocket, sFrom$, sTo$, sCc$, sBcc$, sSubject$, sBody$, sAttach$, sReply$) assign "DZSMTP.dll","DZSmtpSendMail" END FUNCTION EXTERNAL FUNCTION SMTPdisConnect(shnd) assign "DZSMTP.dll","DZSmtpDisConnect" END FUNCTION EXTERNAL FUNCTION UnloadWinsock assign "DZSMTP.dll","DZUnloadWinsock" END FUNCTION EXTERNAL FUNCTION GetError(sMSG$ ) assign "DZSMTP.dll","DZGetError" END FUNCTION EXTERNAL FUNCTION jis6226$(wi$) ! shift-JIS → JIS C 6226 へ変換する関数 LET w$="" FOR n=1 TO LEN( wi$) LET w=ORD( wi$(n:n)) ! JIS 漢字コードを取出し、 IF w<256 THEN ! JIS C 6226 エスケープ・シーケンスで包む。 IF kan=0 THEN LET w$=w$ &CHR$(w) ! starting & 2nd.~半角文字 ELSE LET w$=w$ &CHR$(27)&"(J"&CHR$(w) ! 半角切換+1st.半角文字 LET kan=0 !半角状態_status END IF ELSE IF kan=0 THEN LET w$=w$ &CHR$(27)&"$B"&CHR$(IP(w/256))&CHR$(MOD(w,256)) ! 全角切換+1st.全角文字 LET kan=1 !全角状態_status ELSE LET w$=w$ &CHR$(IP(w/256))&CHR$(MOD(w,256)) ! 2nd.~全角文字 END IF END IF NEXT n IF kan=1 THEN LET w$=w$ &CHR$(27)&"(J" LET jis6226$=w$ END FUNCTION |