Вопрос

Отправка сообщения из командной строки 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top