-1

Base64 でエンコードされたファイルを含む MIME 添付ファイルを生成する必要があります。ただし、許可する必要があるのは、改行なしで添付ファイルをエンコードすることです。私が持っているコードは次のとおりです。

msg_obj = MIMEMultipart()
msg_atch = MIMEBase(mime_type, mime_subtype)
msg_atch.set_payload(file_data)
Encoders.encode_base64(msg_atch)
msg_obj.attach(msg_atch)

base64 添付メッセージの新しい行を削除するために実行しようとしたのは、次のとおりです。

msg_obj = MIMEMultipart()
msg_atch = MIMEBase(mime_type, mime_subtype)
msg_atch.set_payload(file_data)
Encoders.encode_base64(msg_atch)
msg_atch.strip()
msg_obj.attach(msg_atch)

ただし、これはデータの結果を変更できませんでした。これを許可する方法について誰かがアイデアを持っているなら、それは素晴らしいことです。

4

1 に答える 1

1

2 番目のサンプル コードの最後から 2 番目の行で、msg_atch.strip()関数を呼び出していることに気付きました。これの問題は、 の機能がないstrip()ことですMIMEBase

おそらくやりたいことは、次のようなことです。

msg_obj = MIMEMultipart()
msg_atch = MIMEBase(mime_type, mime_subtype)
msg_atch.set_payload(file_data)
Encoders.encode_base64(msg_atch)
msg_atch._payload = msg_atch._payload.replace('\n','')
msg_obj.attach(msg_atch)

文字列は、添付ファイルで使用される実際のMIMEBase._payload(この場合は base64) コンテンツです。

このコードは、MIMEBase 添付ファイルの内部コンテンツを取得し、余分な改行を削除します。これには、「人間が読みやすい」ように base64 テキストの適切な書式設定を提供するための改行も含まれます (私の質問は、なぜそれらが煩わしいのかということです)。最後に改行を取り除きたいだけなら、msg_atch._payload = msg_atch._payload.rstrip('\n').

添付ファイルのヘッダー (Content-Type: application/octet-streamおよびMIME-Version: 1.0一部)にはこれらの改行が必要であることに注意してください。

また、通常、この方法で内部変数を編集するべきではないことを覚えておいてください。しかし、私が Python の優れている点の 1 つは、クラスのプライベート メンバーが実際には存在しないことです。そのため、クラス内で必要なものを変更できます。特に特別な条件の場合は、何でもできます。

ハッピーコーディング!

于 2012-08-22T17:35:22.820 に答える