今回のTutorialはTwinCAT6350 使用しOutlook Serverにメールを送信します。
Installation
下記のLinkにアクセスし、インストールPackageをDownloadします。
Next>します。
ライセンスに同意し、Nextします。
情報を入力し、Nextします。
Completeのほうが無難で、Next>します。
Nextします。
Installで開始します。
しばらくまちます。
よし、これでOKです。
TwinCAT/FunctionsのFolderにTF6350-SMS-SMTPのFolderが見えます。
System Requirment
Configure Your Email
Outlook
今回のMail ServerではOutlookを使用します。
OutlookをLoginし、歯車のICONをクリックします。
一番したのOutlookのすべての設定を表示をクリックします。
Settings>Main>Sync emailで展開します。
Pop optionsをYesし、一番したにSMTP settingsのFieldがあります。
ここでSMTP Serverと接続する設定を書いています。
以下のLinkを参考しました。
https://www.gmass.co/blog/outlook-smtp/
Why not Use Gmail?
なんでGmailを使わないかと言いますと、2022-5-30からLess secure appsからのMail Server Loginができなくなり、また設定方法を探すのが少し面倒なので…
https://support.google.com/accounts/answer/6010255?hl=en
Configuration
こちらは今回の構成です。すごくシンプルでTwinCAT3 TF6350を使用し自分のOutlookアカウントから別のメールアドレスにメール送信します。
Function Block
次は今回の記事で使用してるFunction Blockを紹介します。
FB_SmtpV3
このFunction Blockを使用することによりSMTP Severにメール送信する機能を実装します。
VAR_INPUT
sNetId | T_AmsNetID | TwinCAT SMTP ServerのAmsNetID |
sSmtpServer | T_MaxString | SMTP Server/IP |
sUsername | T_MaxString | SMTP ServerのUserNameここはOutlookのUsername |
sPassword | T_MaxString | SMTP ServerのPasswordここはOutlookのPassword |
nEncryption | UDINT | 0=NONE, 1=STARTTLS, 2=SSL |
sFrom | T_MaxString | 送信者のメールアドレス最大255文字 |
sTo | T_MaxString | 受信者のメールアドレス最低限1つの受信者が必要で、最大255文字 |
sCc | T_MaxString | Cc受信者のメールアドレス最大255文字 |
sBcc | T_MaxString | Bcc受信者のメールアドレス最大255文字 |
sSubject | T_MaxString | メールのタイトル |
pMessage | POINTER TO STRING | メール内容の変数Memory Address空文字なら日付だけのメッセージになります。ExampleMail send at Thu, 23 Mar 200602:31:44 -0800 |
cbMessage | UDINT | メール内容の変数SIZE |
bExecute | BOOL | 立ち上げで実行 |
tTimeout | TIME := T#20s | Timeout 設定 |
VAR_OUTPUT
bBusy | BOOL | True=実行中 |
bError | BOOL | True=Function 実行エラー |
nErrId | UDINT | Error情報 |
Implementation
では実際にプログラムを組んでみましょう。
VAR
使用するのはFB_SmtpV3 Function blockなのでVAR内で定義します。
MessageはMailに送信する内容です。
PROGRAM MAIN VAR SmtpV3:FB_SmtpV3; Message:STRING; bSend:BOOL; END_VAR |
PROGRAM
nEncryptionのところは1をセットしてください。OutlookのSMTP SettingではSTARTTLSを使用しますので。sFromは自分Outlook Accountのメールアドレスそのままでよいと思います。最後はbSend がTrueになりFunction blockを実行し、bBusyが落ちたらリセットします。
Message:=’Hello! this is a test!’; SmtpV3( sSmtpServer:=’smtp.office365.com’ ,sUsername:=’YourOutlookAccount_Username’ ,sPassword:=’YourOutlookAccount_Password’ ,nEncryption:=1 ,sFrom:=’YourOutlook_Email’ ,sTo:=’The receiver’ ,sSubject:=’Test subject’ ,pMessage:=ADR(Message) ,cbMessage:=SIZEOF(Message) ,bExecute:=bSend ); IF bSend AND NOT SmtpV3.bBusy THEN bSend:=FALSE; END_IF |
Result
メールは無事に届きましたね。
Sample Code
https://github.com/soup01Threes/TwinCAT3/blob/main/TwinCAT%20Project_SmtpV3_Sample.tnzip
Summary
最後ですが、InternetでGmail やOutlookl送信する情報を探すとき、大体似てるCodeがのっていますね。でも、一切Gmail側やOutlook側の設定に触れていませんね。そこは少し無責任かなと感じました。メモ系のBlogならまだよいですが、明らかにTutorial風のサイトなら、そのような無責任なことは自分にとって少し許せないですね。
”いかに他の人を楽に覚えさせる”のが自分の目標です。