Ich sende eine E-Mail mit einem oder mehreren Anhängen. Ich erstelle die E-Mail mit Mail gem . Hier ist der Code
mail = Mail.new
mail.to = to
mail.subject = subject
mail.body = email_body
mail.content_type = 'text/html'
# attaching a temp file on the rails server
mail.add_file(params["file"].tempfile.path) # path e.g "/tmp/RackMultipart-some-name-text.png"
message_to_send = Google::Apis::GmailV1::Message.new(raw: mail.to_s)
response = @gmail_service.send_user_message("me", message_to_send)
Anstatt die angehängte Datei zu senden, erhalte ich die E-Mail als Rohtext, wobei die Anhangsdatei als Base64-codierte Zeichenfolge im Textkörper der E-Mail geliefert wird. Hier ist ein Beispiel dafür, wie die empfangene E-Mail aussieht, wenn ich Anhänge sende.
In der Mail Gem- Dokumentation zum Anhängen von Dateien wird nichts Besonderes über andere Änderungen gesagt, außer nur das Hinzufügen von Dateien zum Mail-Objekt. Irgendeine Idee, was hier los ist?
Ich denke, dass in Ihrem Fall der E-Mail-Text und die Anhangsdatei als gesendet werden müssen multipart/alternative
. Wenn also "Mail gem" verwendet wird, wie wäre es mit der folgenden Änderung?
mail = Mail.new
mail.to = to
mail.subject = subject
# I added below script.
mail.part content_type: 'multipart/alternative' do |part|
part.html_part = Mail::Part.new(body: email_body, content_type: 'text/html')
part.text_part = Mail::Part.new(body: email_body)
end
mail.add_file(params["file"].tempfile.path)
message_to_send = Google::Apis::GmailV1::Message.new(raw: mail.to_s)
response = @gmail_service.send_user_message("me", message_to_send)
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen