EvernoteのEメールアドレスに送信するEメールを生成するDelphi6アプリケーションがあります。これは、Eメールでドキュメントを送信するための特別なEメールアドレスであり、Evernoteアカウントに自動的に保存されます。
HTMLドキュメントを正常に作成し、 Indy9.xTIdSMTPコンポーネントを使用してEvernoteの電子メールアドレスに送信しました。Content-Typeを' text/html 'に設定しました。電子メールに添付ファイルを追加しない限り、問題なく動作します。添付ファイルを追加するとすぐに、生成された電子メールに関する何かにより、EvernoteWebインターフェイスが電子メールを生のHTMLとして解釈します。。つまり、レンダリングされたWebページを表示する代わりに、ブラウザで「ソースの表示」を行ったかのように、ドキュメント表示領域に生のHTMLが表示されます。私が追加している電子メールの添付ファイルは、AVIファイルとWAVファイルです。添付ファイルを追加すると、EvernoteWeb表示領域の電子メールの下部に両方が正しく表示されます。
繰り返しになりますが、添付ファイルを追加しないとすぐに、ドキュメントはEvernoteWebインターフェイスにきれいなWebページとして表示されます。添付ファイルを追加すると、生のHTMLが表示されます。誰かが私がこの問題を解決するために試みることができる何かを提案できますか?生成されたドキュメントをEvernoteの電子メールアドレスに送信するために使用するコードを以下に同封しました。bodyという名前の変数には、完全にフォーマットされたHTMLドキュメントが含まれています。
更新:Evernote以外のEメールアドレスにEメールを送信したので、生のEメールメッセージを見ることができました。添付ファイルを追加すると、TIdSMTPは、コードで「text / html」に設定したにもかかわらず、生成されるマルチパート電子メールの最初の部分のContent-Typeを「text/plain」に変更することがわかりました。メッセージを作成します。Indyのソースを見て、何が問題になっているのかを理解できるかどうかを確認します。
function easySendEmail(
theIdSmtp : TIdSmtp;
destEMailAddress : string;
subject : string;
body : string;
emailServerSettings : TEmailServerSettingsRecord;
aryAttachmentFilenames : TDynamicStringArray;
connectTimeOut_ms : integer;
bUseEHLO : boolean;
authLoginType : TAuthenticationType): boolean;
var
IdMsg: TIdMessage;
aryAttachments: TDynamicIdAttachmentArray;
i: integer;
begin
aryAttachments := nil;
IdMsg := nil;
destEMailAddress := Trim(destEMailAddress);
if destEMailAddress = '' then
raise Exception.Create('(TframeEmailServerSettings.easySendEmail) The destination E-mail address is empty.');
subject := Trim(subject);
if subject = '' then
raise Exception.Create('(TframeEmailServerSettings.easySendEmail) The subject line is empty.');
body := Trim(body);
if body = '' then
raise Exception.Create('(TframeEmailServerSettings.easySendEmail) The message body is empty.');
try
with emailServerSettings do
begin
// Build a test message and send it.
IdMsg := TIdMessage.Create(nil);
IdMsg.Recipients.EMailAddresses := destEMailAddress;
{
Most SMTP servers require the sending E-mail address as the
user name for the authentication. However, if we
encounter one that doesn't work this way then re-using
the authentication user name as the From address
will not work.
}
IdMsg.From.Name := APPLICATION_NAME_EVERMAIL;
IdMsg.From.Address := user_name;
IdMsg.Subject := subject;
IdMsg.Body.Text := body;
IdMsg.ContentType := 'text/html';
// IdMsg.ContentType := 'text/plain';
theIdSmtp.Host := host;
theIdSmtp.Username := user_name;
theIdSmtp.Password := password;
theIdSmtp.Port := port_number;
// Use EHLO method.
theIdSmtp.UseEhlo := true;
// Login method of authentication.
theIdSmtp.AuthenticationType := atLogin;
// Add the attachments.
// >>> If I comment out the code below the document shows
// up as a rendered web page in the Evernote web interface.
// If I uncomment it and therefore add attachments, the
// document shows up as raw HTML.
{
if Length(aryAttachmentFilenames) > 0 then
begin
SetLength(aryAttachments, Length(aryAttachmentFilenames));
for i := Low(aryAttachmentFilenames) to High(aryAttachmentFilenames) do
// Add each attachment.
aryAttachments[i] := TIdAttachment.Create(IdMsg.MessageParts, aryAttachmentFilenames[i]);
end; // if Length(aryAttachmentFilenames) > 0 then
}
// Connect to the desired SMTP server. N second time-out.
theIdSmtp.Connect(connectTimeOut_ms);
// Send it.
theIdSmtp.Send(IdMsg);
// If we got here than the test succeeded. Set the flag
// indicating the current settings are valid.
Result := true;
end; // with mergeEditsWithOriginal do
finally
theIdSmtp.Disconnect;
if Assigned(IdMsg) then
IdMsg.Free;
end; // try
end;