3

メール送信にcurlライブラリを使用しています。メールを正常に送信できます。受信側でFROM、Subject、bodyが正しく見えます。今、私の必要性は電子メールの添付ファイルです。私はこのようにフォローしました:http: //msdn.microsoft.com/en-us/library/ms526560 (v = exchg.10).aspx

static const char *text[]={
  "Date: Wed, 06 Feb 2013 12:30:30 +1100\n",
  "To: " RECIPIENT "\n",
  "From: " MAILFROM "\n",
  "MIME-Version: 1.0",
  "Content-Type: multipart/mixed",
  "boundary=""XXXXX""\n",
  "Subject: email example message\n",
  "--XXXXX",
  "\n", /* empty line to divide headers from body, see RFC5322 */
  "The body of the message starts here.\n",
  "Check RFC5322.\n",
  "--XXXXX",
  "Content-Type: text/plain" "\n",
  "Content-Disposition: attachment" "\n",
  "filename="FILE_PATH "\n",    
  "--XXXXX--",
  NULL
};

彼らはRFC5322を提案しています。しかし、その中で私は愛着のようなものを見つけることができませんでした。それが正しいか?libcurl+C言語を使用する他の方法も歓迎されます。

ホルヘという名前の人が2012年10月13日に同じような質問をしたと思います。しかし、答えはありません。

4

4 に答える 4

2

最も簡単な方法は、バイナリ データを電子メールで送信できる ASCII 文字に変換する base64 エンコーディングなどを使用してエンコードすることです。ファイルを base64 エンコードし、以下のように文字列を挿入します。大文字のすべてを正しいものに置き換えます。

--XXXXboundary text
Content-Type: application/FILETYPE; name="FILENAME"
Content-Disposition: attachment; filename="FILENAME"
Content-Transfer-Encoding: base64
STRINGFROMBASE64ENCODING

base64 に関するスレッド: C で base64 をエンコード (デコード) するにはどうすればよいですか?

于 2013-02-26T05:22:44.200 に答える
0

たぶん、libquickmail(http://sf.net/p/libquickmail/)を見てください。ファイルを添付するために必要なすべての魔法を実行し、SMTPトランスポートにlibcurlを使用します(またはlibquickmaillightにlibcurlがない場合でも)。

于 2013-02-18T22:33:28.253 に答える
0

以下のように実行できます。

static const char *payload_text[] = {
  "To: " TO "\r\n",
  "From: " FROM "(Example User)\r\n",
  "Cc: " CC "(Another example User)\r\n",
  "Subject: SMTPS Example\r\n",
  "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
  "User-Agent: My eMail Client\r\n",
  "MIME-Version: 1.0\r\n",
  "Content-Type: multipart/mixed;\r\n",
   " boundary=\"------------030203080101020302070708\"\r\n",    
  "\r\nThis is a multi-part message in MIME format.\r\n",
  "--------------030203080101020302070708\r\n",
  "Content-Type: text/plain; charset=utf-8; format=flowed\r\n",
  "Content-Transfer-Encoding: 7bit\r\n",
  "\r\n", /* empty line to divide headers from body, see RFC5322 */
  "The body of the message starts here.\r\n",
  "\r\n",
  "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
  "Check RFC5322.\r\n\r\n",
  "--------------030203080101020302070708\r\n",
  "Content-Type: text/plain; charset=utf-8; format=flowed\r\n",
  "  name=\"send.c\"\r\n",
  "Content-Type: text/plain; charset=utf-8; format=flowed\r\n",
  "Content-Disposition: attachment;\r\n",
  "  filename=\"abc.txt\"\r\n",
  "\r\n",
  "bla bla file content is here\r\n",
  "--------------030203080101020302070708--\r\n",
  NULL
};
于 2015-11-06T12:58:40.943 に答える
0

その通りだと思いますが、なぜヌルファイルを添付したのですか?最終的なアタッチメント本体のアパートに何かを入れる必要があると思います。

例えば:

--XXXXboundary text 
Content-Type: text/plain;
Content-Disposition: attachment;
        filename="test.txt"

this is the attachment text ---- this is attachment content

--XXXXboundary text--
于 2013-02-06T10:51:21.097 に答える