新しく発言する EXIT インデックスへ
!十進BASICでメール送信。

  !十進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


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。