开发者

Emails, a different 'reply to' address than sender address

开发者 https://www.devze.com 2023-02-02 05:54 出处:网络
I have a contact form on a website (a general form: name, email, subject, message) in which mails are sent using google apps smtp to the admins.

I have a contact form on a website (a general form: name, email, subject, message) in which mails are sent using google apps smtp to the admins.

Currently if an administrator wants to reply to the mail directly selecting the reply option, the person's reply's To field will be filled by the sender's address automatically.

What I wan't to ask is, Is there any standardized way to pass on some additional info with the mail which would define any reply to the mail should go to this address instead of the sender's?

It does seems that there is a little chance for this option as it may lead to some problems due to spammers (They may define a custom reply field in their mail and a general user might not look where they are replying).

So as an alternative what I thought is to find a way to create a filter with sender's account which figures out the reply email address from the format and forwards the mail (Doesn't seems like a good solution and I have no idea how to achieve this).

I have 开发者_开发百科tagged django, though this is not directly related with this, as I will finally implement this through django.


There are in fact standardized headers to specify response headers: http://cr.yp.to/immhf/response.html.

As far as implementing this in Django is concerned, the documentation contains an example:

from django.core.mail import EmailMessage

email = EmailMessage(
    'Hello', # email subject
    'Body goes here', # email body
    'from@example.com', # sender address
    ['to1@example.com', 'to2@example.com'],
    ['bcc@example.com'],
    headers={'Reply-To': 'another@example.com'},
)

This solved my problem.


Reply-To is a standard SMTP header.

I can't find a good reference for it at the moment, but it is mentioned in the Wikipedia article on Email.

Edit: Found it: RFC 5322, section 3.6.2


The RFC says you can specify multiple emails and that is what I was looking for. Came up with this:

from django.core.mail import EmailMessage
headers = {'Reply-To': 'email@one.com;email@two.com'}
msg = EmailMessage(subject, html_content, EMAIL_HOST_USER, email_list, headers=headers)
msg.content_subtype = "html"
msg.send()

Works like a charm. Note: EMAIL_HOST_USER is imported from your settings file as per Django doc email setup. More on this here, search for 'reply-to': https://docs.djangoproject.com/en/dev/topics/email/


Here is also how reply-to can be used

from django.core.mail import EmailMessage

email = EmailMessage(
    'Hello',
    'Body goes here',
    'from@example.com',
    ['to1@example.com', 'to2@example.com'],
    ['bcc@example.com'],
    reply_to=['another@example.com'],
    headers={'Message-ID': 'foo'},
)

Read more at docs docs.djangoproject

0

精彩评论

暂无评论...
验证码 换一张
取 消