前提・実現したいこと
Webサーバにあるファイル(Excelなど)を添付したメール送信をプログラミングしています。
メール送信、受信したメールにファイルが添付されるところまで実現できましたが、
添付されたファイルは壊れており開けません。
ファイルサイズを確認したところ、Webサーバにある実ファイルより数十バイト差があり、
こちらが原因とは思いますが修正箇所がわかりません。
該当のソースコード
メールサーバにソケット接続し、以下の文字列をsendし、ソースコードのとおりファイルの
中身を255バイトずつ取得しながらsendしています。
MIME-Version: 1.0\r\n
Content-Type: multipart/mixed; boundary="1234SV"\r\n
Content-Type: text/plain; charset=ISO-2022-JP\r\n
Content-Transfer-Encoding: 7bit\r\n
\r\n
--1234SV\r\n
Content-Type: text/plain; name=test.xlsx\r\n\r\n
C
101 fp = fopen("test.xlsx", "r"); 202 for (;;) { 303 len = fread(str, 1, 255, fp); 404 if (len == 0) { 505 break; 606 } 707 send(socket, str, len, 0); 808 } 909 strcpy(str, "\r\n\r\n--1234SV\r\n"); 1010 len = strlen(str); 1111 send(socket, str, len, 0);
以下省略
試したこと
Content-Typeをtext/plainから変更してみましたが事象は変わりません。
添付されたxlsxファイルをバイナリで実ファイルと比較したところ、
・改行コードが異なっている(LFがCRLFになっている)
・NULがSPになっている
など差異があることは確認できました。(なぜ発生しているは分かりません)
また、ソースコード09行目の文字列で改行コードを増減すると
添付ファイルサイズも併せて増減するのでマルチパートの記述にも
誤りがあると考えてます。
補足情報
Webサーバ:apache
Mailサーバ:postfix
サーバOS:CentOS6
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/07 00:57