Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
解決! メール送信 (2015)
Search
4D Japan
September 15, 2024
Technology
42
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 R2 R3
miyako
0
32
4D 21 LTS
miyako
0
18
4D 21
miyako
0
42
4D 20 R10
miyako
0
44
4D 20 R9
miyako
0
40
4D 20 R7 & R8
miyako
0
85
Unicodeの話 (2007)
miyako
0
47
Unicodeの話 (2008)
miyako
0
54
Google Apps Integration (2012)
miyako
0
57
Other Decks in Technology
See All in Technology
20260903 Tokyo Jazug Night #62 | Azure エンジニアよ、 その環境は本当にセキュアか?
olivia_0707
1
620
はじめてのDatabricks:技術者向けワークショップ / beginner-workshop
databricksjapan
PRO
0
230
#jawssonic2026 あの時代が悪かった ~動かなかったSageMakerと共に迎えたイベント当日~
ktkn1129
0
130
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
210
Tab5をRubyで動くパソコンにする
kishima
1
220
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
240
書籍『生成AIの安全性入門』の入門
wataoka
0
220
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
570
設計の世代交代を乗り越える、14年続くAndroidアプリの開発戦略
sansantech
PRO
1
150
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.3k
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
120
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
120
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Unsuck your backbone
ammeep
672
58k
Ethics towards AI in product and experience design
skipperchong
2
360
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Docker and Python
trallard
47
4.2k
エンジニアに許された特別な時間の終わり
watany
108
250k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
260
Odyssey Design
rkendrick25
PRO
2
800
Automating Front-end Workflow
addyosmani
1369
210k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
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 ⭕