Измените адрес «От:» в «почте» Unix.
Вопрос
Отправка сообщения из командной строки Unix с помощью mail TO_ADDR
приводит к получению электронного письма от $USER@$HOSTNAME
.Есть ли способ изменить адрес «От:», вставленный mail
?
Для справки: я использую GNU Mailutils 1.1/1.2 в Ubuntu (но я видел такое же поведение с Fedora и RHEL).
[РЕДАКТИРОВАТЬ]
$ mail -s Testing chris@example.org Cc: From: foo@bar.org Testing .
урожайность
Subject: Testing To: <chris@example.org> X-Mailer: mail (GNU Mailutils 1.1) Message-Id: <E1KdTJj-00025z-RK@localhost> From: <chris@localhost> Date: Wed, 10 Sep 2008 13:17:23 -0400 From: foo@bar.org Testing
«От:foo@bar.org» является частью тела сообщения, а не частью заголовка.
Решение
В моей версии почты (Debian linux 4.0) для управления адресами источника/ответа работают следующие опции:
- тот -а переключатель для применения дополнительных заголовков, предоставляющий From:заголовок в командной строке, который будет добавлен к заголовку исходящей почты.
- тот $REPLYTO Переменная среды определяет поле «Ответить»:заголовок
поэтому следующая последовательность
export REPLYTO=cms-replies@example.com
mail -aFrom:cms-sends@example.com -s 'Testing'
Результатом в моих почтовых клиентах является письмо от cms-sends@example.com, на которое все ответы по умолчанию будут отправляться на cms-replies@example.com.
Примечание: Пользователи Mac OS:у тебя нет -a, но есть $REPLYTO
Примечание(2): Пользователи CentOS, многие комментаторы добавили, что вам нужно использовать -r
нет -a
Примечание(3): Этому ответу не менее десяти лет(1), имейте это в виду, когда заходите из Google.
Другие советы
На Centos 5.3 я могу:
mail -s "Subject" user@address.com -- -f from@address.com < body
Двойное тире не позволяет почте анализировать аргумент -f и передает его самому sendmail.
Команда «mail» GNU mailutils не позволяет вам сделать это (по крайней мере, легко).Но если вы устанавливаете «heirloom-mailx», его почтовая команда (mailx) имеет опцию «-r», чтобы переопределить поле «$USER@$HOSTNAME» по умолчанию.
echo "Hello there" | mail -s "testing" -r sender@company.com recipient@company.com
Работает для «mailx», но не для «mail».
$ ls -l /usr/bin/mail lrwxrwxrwx 1 root root 22 2010-12-23 08:33 /usr/bin/mail -> /etc/alternatives/mail $ ls -l /etc/alternatives/mail lrwxrwxrwx 1 root root 23 2010-12-23 08:33 /etc/alternatives/mail -> /usr/bin/heirloom-mailx
mail -s "$(echo -e "This is the subject\nFrom: Paula <johny@paula.com>\n
Reply-to: 1232564@yourserver.com\nContent-Type: text/html\n")"
milas.josh@gmail.com < htmlFileMessage.txt
вышеприведенное - мое решение... любые дополнительные заголовки могут быть добавлены сразу после from и перед ответом на... просто убедитесь, что вы знаете синтаксис заголовков, прежде чем добавлять их.... это отлично сработало для меня.
Плюс приятно использовать -F option
указать Имя отправителя.
Что-то вроде этого:
mail -s "$SUBJECT" $MAILTO -- -F $MAILFROM -f ${MAILFROM}@somedomain.com
Или просто посмотрите доступные варианты:http://www.courier-mta.org/sendmail.html
Также можно установить как имя отправителя, так и адрес отправителя, используя что-то вроде:
echo test | mail -s "test" example@example.com -- -F'Some Name<example2@example.com>' -t
Почему-то мимо -F'Some Name'
и -fexample2@example.com
не работает, но передавая -t
sendmail работает и это «легко».
Вот несколько вариантов:
Если у вас достаточно привилегий, настройте sendmail на перезапись с использованием универсальной таблицы.
Напишите весь заголовок самостоятельно (или отправьте его себе по почте, сохраните все сообщение со всеми заголовками, отредактируйте заново и отправьте его с помощью rmail из командной строки).
Отправляйте напрямую с помощью sendmail, используйте флаг командной строки «-f» и не включайте строку «От:» в свое сообщение.
Они не совсем одинаковы, но я оставлю это на ваше усмотрение.
На моем портативном компьютере у меня есть sendmail, аутентифицирующийся как клиент на сервере исходящей почты, и я использую дженерики, чтобы возвращаемая почта поступала на другую учетную запись.Отлично работает.Я объединяю входящую почту с помощью fetchmail.
Не знаю, то же самое происходит и в других ОС, но в OpenBSD команда mail имеет такой синтаксис:
mail to-addr ... -sendmail-options ...
sendmail имеет опцию -f, где вы указываете адрес электронной почты для FROM:поле.Следующая команда работает для меня.
mail recepient@example.com -f from@example.com
Спасибо, БО
mail -s "Subject" user@address.com -- -f from@address.com
Я только что нашел это, и это работает для меня.На страницах руководства для почты 8.1 в CentOS 5 об этом не упоминается.Для -f
вариант, на странице руководства написано:
-f Читать сообщения из файла, указанного в файловом операнде, а не из системного почтового ящика.(См. также папку.) Если файловый операнд не указан, читайте сообщения из mbox вместо системного почтового ящика.
В любом случае это здорово найти, спасибо.
Я получил это из всех приведенных выше ответов.Мне ничего не помогло, когда я попробовал каждый из них.Я сделал много проб и ошибок, объединив все приведенные выше ответы, и пришел к такому выводу.Я не уверен, сработает ли это у вас, но у меня это сработало в Ununtu 12.04 и RHEL 5.4.
echo "This is the body of the mail" | mail -s 'This is the subject' '<receiver-id1@email.com>,<receiver-id2@email.com>' -- -F '<SenderName>' -f '<from-id@email.com>'
Можно отправить почту любому количеству людей, добавив любое количество идентификаторов получателя, и почта будет отправлена Имя отправителя от from-id@email.com
Надеюсь это поможет.
В Debian 7 мне все еще не удавалось правильно установить адрес отправителя, используя ответы на этот вопрос (всегда было имя хоста сервера), но я решил это таким образом.
Установить семейная реликвия-mailx
apt-get install heirloom-mailx
убедитесь, что это значение по умолчанию.
update-alternatives --config mailx
Составьте сообщение.
mail -s "Testing from & replyto" -r "sender <sender@example.com>" -S replyto="sender@example.com" recipient@example.net < <(echo "Test message")
echo "body" | mail -S from=address@foo.com "Hello"
-S позволяет указать множество параметров строки, что на сегодняшний день является самым простым способом изменения заголовков и тому подобного.
В CentOS у меня это сработало:
echo "email body" | mail -s "Subject here" -r from_email_address email_address_to
это сработало для меня
echo "hi root"|mail -rsawrub@testingdomain.org -s'testinggg' root
В CentOS 5.5 самый простой способ установить значение по умолчанию из домена — это изменить файл хостов.Если ваш файл хостов содержит ваш WAN/публичный IP-адрес, просто измените первое имя хоста, указанное для него.Например, ваш файл хостов может выглядеть так:
...
11.22.33.44 локальный домен по умолчанию что-нибудь еще.com
...
Чтобы отправить его с сайта What-else.com, просто измените его так, чтобы сайт What-else.com был первым в списке, например:
...
11.22.33.44 что-нибудь еще.com localhost-домен по умолчанию
...
Я не могу говорить о каком-либо другом дистрибутиве (или даже о версии CentOS), но в моем конкретном случае все вышеперечисленное работает отлично.
Эхо "Тест" | mailx -r fake@example.com -s 'test' email@example.com
Это работает в OpenBSD.
Что позволило мне иметь индивидуальный адрес для ответа на Ubuntu 16.04
с UTF-8
кодировка и вложение файла:
Установите почтовый клиент:
sudo apt-get install heirloom-mailx
Отредактируйте конфигурацию SMTP:
sudo vim /etc/ssmtp/ssmtp.conf
mailhub=smtp.gmail.com:587
FromLineOverride=YES
AuthUser=???@gmail.com
AuthPass=???
UseSTARTTLS=YES
Отправьте письмо:
sender='send@domain.com'
recipient='recipient@domain.com'
zipfile="results/file.zip"
today=`date +\%d-\%m-\%Y`
mailSubject='My subject on the '$today
read -r -d '' mailBody << EOM
Find attached the zip file.
Regards,
EOM
mail -s "$mailSubject" -r "Name <$sender>" -S replyto="$sender" -a $zipfile $recipient < <(echo $mailBody)
Ни одно из вышеперечисленных решений не работает для меня...
#!/bin/bash
# Message
echo "My message" > message.txt
# Mail
subject="Test"
mail_header="From: John Smith <john.smith@example.com>"
recipients="recipient@example.com"
#######################################################################
cat message.txt | mail -s "$subject" -a "$mail_header" -t "$recipients"
Ответы, предоставленные ранее, не сработали для меня на CentOS5.Я установил мут.У него много вариантов.С mutt вы делаете это следующим образом:
export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org