質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Delphi

DelphiはPascalを拡張してオブジェクト指向を導入したWindows, OS X,iOS,Androidのネイティブアプリケーションを開発するための言語です。旧称はObject Pascal。開発用IDE「Delphi」にあわせ現在の名前に改称されました。

Q&A

解決済

1回答

1125閲覧

DelphiでHotmail送信

soma62jp

総合スコア141

Delphi

DelphiはPascalを拡張してオブジェクト指向を導入したWindows, OS X,iOS,Androidのネイティブアプリケーションを開発するための言語です。旧称はObject Pascal。開発用IDE「Delphi」にあわせ現在の名前に改称されました。

0グッド

0クリップ

投稿2017/08/25 05:00

編集2017/08/25 06:15

###前提・実現したいこと
DelphiでHotmail経由でメールを送信したい

「SSLメソッドの取得でエラーが発生しました。」というメッセージが出て正常にメッセージを送信できません。
何か特別な設定が必要でしょうか?

###該当のソースコード

Delphi

1procedure TForm1.Button1Click(Sender: TObject); 2var 3 IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL; 4 IdSMTP: TIdSMTP; 5 IdMessage: TIdMessage; 6 IdText: TIdText; 7begin 8 9 IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(nil); 10 IdSMTP := TIdSMTP.Create(nil); 11 IdMessage := TIdMessage.Create(nil); 12 IdText := TIdText.Create(IdMessage.MessageParts); 13 IdSMTP.IOHandler:=IdSSLIOHandlerSocket; 14 15 try 16 17 IdSSLIOHandlerSocket.SSLOptions.Method := sslvSSLv2; 18 IdSSLIOHandlerSocket.SSLOptions.Mode := sslmClient; 19 20 IdSMTP.IOHandler := IdSSLIOHandlerSocket; 21 IdSMTP.UseTLS := utUseImplicitTLS; 22 IdSMTP.AuthType := satDefault; 23 IdSMTP.Port := 587; 24 IdSMTP.Host := 'smtp-mail.outlook.com'; 25 IdSMTP.Username := 'hoge@hotmail.com'; // ユーザ名 26 IdSMTP.Password := 'huga'; // パスワード 27 28 IdMessage.From.Address := 'hoge@hotmail.com'; // 送信元アドレス 29 IdMessage.From.Name := 'Hoge Huga'; 30 IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address; 31 IdMessage.Recipients.Add.Text := 'sendto@hogehuga.com'; // 送信先アドレス 32 IdMessage.Subject := 'タイトル'; 33 IdMessage.Encoding := meMIME; 34 IdMessage.OnInitializeISO:=IdMessage_InitializeISO; 35 IdMessage.ContentType := 'text/plain'; 36 IdMessage.CharSet := 'ISO-2022-JP'; 37 IdMessage.ContentTransferEncoding := 'BASE64'; 38 39 IdText.Body.Clear; 40 IdText.Body.Add('本文'); 41 IdText.ContentType := 'text/plain; charset=ISO-2022-JP'; 42 43 try 44 IdSMTP.Connect; 45 IdSMTP.Authenticate; 46 except 47 on E:Exception do 48 begin 49 MessageDlg('Cannot authenticate: ' + E.Message, mtWarning, [mbOK], 0); 50 Exit; 51 end; 52 end; 53 54 try 55 IdSMTP.Send(IdMessage); 56 except 57 On E:Exception do 58 begin 59 MessageDlg('Error while sending a message: ' + E.Message, mtWarning, [mbOK], 0); 60 end; 61 end; 62 finally 63 IdSMTP.Disconnect(); 64 FreeAndNil(IdText); 65 FreeAndNil(IdMessage); 66 FreeAndNil(IdSSLIOHandlerSocket); 67 FreeAndNil(IdSMTP); 68 end; 69 70end; 71 72procedure TForm1.IdMessage_InitializeISO(var VHeaderEncoding: Char; var VCharSet: string); 73begin 74 VHeaderEncoding := 'B'; 75 VCharSet := 'UTF-8'; 76end;

###試したこと
Yahooを使用(正常に使用可)
Gmailを使用(正常に使用可)

###補足情報(言語/FW/ツール等のバージョンなど)
Delphi 10.1 update2
OpenSSL openssl-1.0.2l

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

下記設定が違ったようです。

IdSSLIOHandlerSocket.SSLOptions.Method := sslvSSLv23;
IdSMTP.UseTLS := utUseExplicitTLS;

で送信可能になりました。

投稿2017/08/25 10:20

soma62jp

総合スコア141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問