Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
解決! メール送信 (2015)
Search
4D Japan
September 15, 2024
Technology
48
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
解決! メール送信 (2015)
4D Japan
September 15, 2024
More Decks by 4D Japan
See All by 4D Japan
4D 21 R4
miyako
0
20
4D 21 R2 R3
miyako
0
36
4D 21 LTS
miyako
0
26
4D 21
miyako
0
52
4D 20 R10
miyako
0
55
4D 20 R9
miyako
0
49
4D 20 R7 & R8
miyako
0
95
Unicodeの話 (2007)
miyako
0
57
Unicodeの話 (2008)
miyako
0
66
Other Decks in Technology
See All in Technology
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
800
Oracle Database Security 詳細解説
oracle4engineer
PRO
2
270
業務でAWSをあまり使っていない私が、AWSへのモチベを保つ方法
smt7174
0
160
レガシーコードに対する loop engineering的なAI開発プロセス導入について
kubell_hr
0
270
令和の今、あらためて IAM を考える。アクセスキーを「無くせない現実」との向き合い方
kazzpapa3
0
330
増え続けるプロダクトの品質をどう担保するか。ProductSpecとTypeScriptによる取り組み
joere
3
490
Metadata - Section 3 : Dublin Core Standard · DC
mohab1
0
100
bpf_arenaとstruct_opsを使うのが難しかった話
masu_mi
0
210
Context Ontology Accelerator 入門 (業務データの意味を、AI エージェントに渡す)
inariku
PRO
3
420
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
3
190
バックオフィスに染み出すTypeScript ── clasp で安全に仕組みを作る
nealle
1
180
AIがGISを代替する日:〜すべてをAIが創る時代に、私たちがFOSS4Gに関わる意味〜
lehupa
1
210
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Navigating Team Friction
lara
192
16k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Are puppies a ranking factor?
jonoalderson
2
4.1k
HDC tutorial
michielstock
2
1k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
How to Ace a Technical Interview
jacobian
280
24k
Done Done
chrislema
187
17k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
420
Transcript
SSL・STARTTLS・UTF-‐‑‒8・HTML・添付ファイル 解決! メール送信
$hostName:="smtp.gmail.com" $from:="
[email protected]
" $to:="
[email protected]
" $subject:=… $body:=… $user:="
[email protected]
" $password:=… $useSSL:=1 $port:=465 $error:=SMTP_New
($smtpId) If (0=$error) Case of : (0#IT_SetPort (12;$port)) : (0#SMTP_Host ($smtpId;$hostName)) : (0#SMTP_From ($smtpId;$from)) : (0#SMTP_To ($smtpId;$to)) : (0#SMTP_Subject ($smtpId;$subject)) : (0#SMTP_Body ($smtpId;$body)) : (0#SMTP_Auth ($smtpId;$user;$password)) Else $error:=SMTP_Send ($smtpId;$useSSL) End case $error:=SMTP_Clear ($smtpId) End if v12.0 $error:=SMTP_SetPrefs (1;14;0) $error:=SMTP_Charset (1;1) ISO-‐‑‒2022-‐‑‒JP incomplete support UTF-‐‑‒8
v12.0 $error:=SMTP_SetPrefs (1;15;0) $error:=SMTP_Charset (1;1) UTF-‐‑‒8 code encoding header body
1 windows-‐‑‒1252 quoted-‐‑‒printable quoted-‐‑‒printable 2, 3, 4 us-‐‑‒ascii 7bit quoted-‐‑‒printable 5, 6, 7, 8 iso-‐‑‒8859-‐‑‒1 base64 quoted-‐‑‒printable 10, 14 iso-‐‑‒2022-‐‑‒jp base64 quoted-‐‑‒printable 15, 16 utf-‐‑‒8 (charset=shift-‐‑‒jis) base64 base64 Unicodeモードに関係なく,Internet Commands (~∼v13) に渡されたテキストは ⼀一旦,shift-‐‑‒jisに変換されなければならない。変換できない⽂文字は ? で置換される。 incomplete support UTF-‐‑‒8
$hostName:="smtp.gmail.com" $from:="
[email protected]
" $to:="
[email protected]
" $subject:=… $body:=… $user:="
[email protected]
" $password:=… $useSSL:=1 $port:=465 $error:=SMTP_New
($smtpId) If (0=$error) Case of : (0#IT_SetPort (12;$port)) : (0#SMTP_Host ($smtpId;$hostName)) : (0#SMTP_From ($smtpId;$from)) : (0#SMTP_To ($smtpId;$to)) : (0#SMTP_Subject ($smtpId;$subject)) : (0#SMTP_Body ($smtpId;$body)) : (0#SMTP_Auth ($smtpId;$user;$password)) Else $error:=SMTP_Send ($smtpId;$useSSL) End case $error:=SMTP_Clear ($smtpId) End if IMPLICIT MODE v12.1 SMTP over SSL SMTP over SSL SMTP over SSL $error:=SMTP_SetPrefs (1;14;0) $error:=SMTP_Charset (1;1)
IMPLICIT MODE v12.1 SMTP over SSL Error with AUTHENTICATION
$hostName:="smtp.gmail.com" $from:="
[email protected]
" $to:="
[email protected]
" $subject:=… $body:=… $user:="
[email protected]
" $password:=… $useSSL:=1 $port:=465 $error:=SMTP_QuickSend
($hostName;$from;$to;$subject;$body;$useSSL;$port;$user;$password) IMPLICIT v13.2 SMTP over SSL ポート番号・ユーザー名・パスワードを設定 (SMTP_̲Sendを使⽤用する必要なし) $error:=SMTP_SetPrefs (1;14;0) $error:=SMTP_Charset (1;1) SMTP over SSL
$hostName:="exchange.4d.com" $from:=“
[email protected]
" $to:="
[email protected]
" $subject:=… $body:=… $user:="keisuke.miyako" $password:=… $useSSL:=0 $port:=587 $error:=SMTP_QuickSend
($hostName;$from;$to;$subject;$body;$useSSL;$port;$user;$password) EXPLICIT v13.2 STARTTLS $error:=SMTP_SetPrefs (1;14;0) $error:=SMTP_Charset (1;1) STARTTLS STARTTLS: ⾮非SSLポート番号(Exchange: 587)に接続し,サーバーから要求された場合,SSL/TLSに移⾏行行する。
full support v14.0 UTF-‐‑‒8 $error:=SMTP_SetPrefs (1;14;0) $error:=SMTP_Charset (1;1) ISO-‐‑‒2022-‐‑‒JP code
encoding header body 1 utf-‐‑‒8 base64 base64 2, 3, 4 utf-‐‑‒8 base64 base64 5, 6, 7, 8 utf-‐‑‒8 base64 base64 10, 14 utf-‐‑‒8 base64 base64 15, 16 utf-‐‑‒8 base64 base64 SMTP_̲SetPrefs, SMTP_̲Charsetの指定に関係なく,Internet Commands (v14) に渡されたテキストは常にUnicode (UTF-‐‑‒8) で送信されるのはバグ。
$error:=SMTP_New ($smtpId) If (0=$error) Case of : (0#IT_SetPort (12;$port)) :
(0#SMTP_Host ($smtpId;$hostName)) : (0#SMTP_From ($smtpId;$from)) : (0#SMTP_To ($smtpId;$to)) : (0#SMTP_Subject ($smtpId;$subject)) : (0#SMTP_Body ($smtpId;$body;4)) : (0#SMTP_Auth ($smtpId;$user;$password)) Else $error:=SMTP_Send ($smtpId;$useSSL) End case $errorText:=IT_ErrorText ($error) $error:=SMTP_Clear ($smtpId) End if content-‐‑‒type v14.0 HTML Content-‐‑‒Type:text/html $error:=SMTP_AddHeader ($smtpId;"Content-Type";"text/html")
content-‐‑‒type 添付ファイル v14R4 $error:=SMTP_Attachment ($smtpId;$filePath;2;0;"";$contentType) code encoding 0 none 1
BinHex 2 Base64 3 AppleSingle 4 AppleDouble 5 AppleSingle+Base64 6 AppleDouble+Base64 7 UUEncode base64 ※最新のApple Mail/iOSはBinHex⾮非対応 code mode 0 append 1 over-‐‑‒write 2 remove append content-‐‑‒typeが省省略略された場合, 拡張⼦子に基づいて⾃自動的に追加
content-‐‑‒id 添付ファイル v14R4 $error:=SMTP_Attachment ($smtpId;$filePath;2;0;$contentId;$contentType) $error:=SMTP_New ($smtpId) If (0=$error) Case
of : (0#IT_SetPort (12;$port)) : (0#SMTP_Host ($smtpId;$hostName)) : (0#SMTP_From ($smtpId;$from)) : (0#SMTP_To ($smtpId;$to)) : (0#SMTP_Subject ($smtpId;$subject)) : (0#SMTP_Body ($smtpId;$body;4)) : (0#SMTP_Attachment ($smtpId;$logoPath;2;0;"image1")) : (0#SMTP_Auth ($smtpId;$user;$password)) Else $error:=SMTP_Send ($smtpId;$useSSL) End case $errorText:=IT_ErrorText ($error) $error:=SMTP_Clear ($smtpId) End if content-‐‑‒id <img src="cid:image1" alt="logo"> content-‐‑‒id
4D Write Pro v14R5 MIME $error:=SMTP_QuickSend ($hostName;$from;$to;$subject;$body;$param;$port;$user;$password) 11 12.1 13.2
14.0 14R5 no SSL 0 ⭕ STARTTLS 0 ⭕ ⭕ ⭕ SMTP over SSL 1 ⭕ ⭕ ⭕ ⭕ no SSL 2 ⭕ ⭕ ⭕ HTML/no SSL 4 ⭕ ⭕ HTML/STARTTLS 5 ⭕ ⭕ MIME/no SSL 8 ⭕ MIME/STARTTLS 9 ⭕