导航:首页 > 程序命令 > linux命令发送邮件

linux命令发送邮件

发布时间:2022-05-05 10:08:52

linux下如何发送mail,难道一定要开smtp服务吗

是的

Linux下的SMTP服务的配置,比较复杂一些,且各发行版本有些差异,以下是一个示例,供参考(建议使用第三个方法)

linux下smtp配置方法有几种,具体如下:
方法一,使用mail函数发送邮件;使用时时需要在本地系统上正确设置SMTP,否则将不能发送邮件。由于对系统的依赖性比较大,很多时候很不稳定,在一些提供虚拟主机服务的代理商中使用mail函数发送邮件往往很不好用,所以不推荐使用这种方法。
方法二,使用管道的形式发送邮件,主要是使用php中的popen函数。使用管道的方法发送邮件属于比较底层的操作,它取决于用户调用程序的稳定性。所以相比mail函数,这是一种可选的发送邮件的方式,但是这些本地的邮件系统都太复杂了,用户可能不会配置。
方法三(推荐),使用phpmailer。phpmailer类是一个开源的发送邮件类,可以从http://phpmailer.sourceforge.net官网下载,它含两个文件class.smtp.php和class.phpmailer.php。代码如下

include_once("class.phpmailer.php");
/**
* 定义邮件模块配制信息
*/
define("SMTP_HOST","smtp.mail.yahoo.com"); // SMTP 主机
define("SMTP_MAIL"," [email protected]"); // SMTP 用户email
define("SMTP_PASS"," XXXX"); // SMTP 用的密码

define("SERVICE_MAIL"," [email protected]"); // SMTP 用户email
define("SERVICE_NAME","PHPBOOK邮件测试"); // SMTP 用的名字

/**
* 使用phpmailer发邮件模块
*
* @param string $email
* @param string $user
* @param string $subject
* @param string $body
* @return bool
*/
function sendMail($email,$user,$subject,$body)
{
$mail = new PHPMailer();
//$this;
$mail->IsSMTP(); // 设置使用SMTP
$mail->Host = SMTP_HOST; // 设置SMTP服务器地址
$mail->SMTPAuth = true; // 打开SMTP权限验证
$mail->Username = SMTP_MAIL; // SMTP 用户名
$mail->Password = SMTP_PASS; // SMTP 服务器密码

$mail->From = SERVICE_MAIL; // 设置发送者地址
$mail->FromName = SERVICE_NAME; // 设置发送者名字
$mail->AddAddress($email, $user); // 添加接收者地址
$mail->AddReplyTo(SERVICE_MAIL, SERVICE_NAME); // 设置回复地址

$mail->WordWrap = 50; // 设置显示格式
$mail->IsHTML(true); // 设置邮件支持html
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AltBody = ""; // 文本类型的邮件

if(!$mail->Send())
{
return $mail->ErrorInfo;
}
return true;
}

//开始发送测试邮件ng: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/xiehui/admin/mail/class.smtp.php on line 89
$tomail = " [email protected]";
$user = " XXXXlinux";
$_mailSubject = "邮件测试示例!"; // 发给用户的邮件标题小组
$_mailBody = "新浪网"; // 邮件内容小组
sendMail($tomail,$user,$_mailSubject,$_mailBody);
?>

实验证明yahoo的smtp很好用,号称sina的其实并不好用,我卡在着好长时间。

方法四,给予socket编写的程序,源代码如下

使用socket发送邮件的封装类:
class sendmail{
var $lastmessage; //记录最后返回的响应信息
var $lastact; //最后的动作,字符串形式
var $welcome; //用在HELO后面,欢迎用户
var $debug; //是否显示调试信息
var $smtp; //smtp服务器
var $port; //smtp端口号
var $fp; //socket句柄
//发送邮件函数
function send_mail($smtp, $welcome="", $debug=false) {
if(empty($smtp)) die("SMTP不能为空!");
$this->smtp=$smtp;
if(empty($welcome)) {
$this->welcome=gethostbyaddr("localhost");
}else
$this->welcome=$welcome;
$this->debug=$debug;
$this->lastmessage="";
$this->lastact="";
$this->port="25";
}
//显示调试信息
function show_debug($message, $inout) {
if ($this->debug) {
if($inout=="in"){ //响应信息
$m='<< ';
}else
$m='>> ';
if(!ereg("\n$", $message))
$message .= "
";
$message=nl2br($message);
echo "${m}${message}";
}
}
//执行传递的命令
function do_command($command, $code) {
$this->lastact=$command;
$this->show_debug($this->lastact, "out");
fputs ( $this->fp, $this->lastact );
$this->lastmessage = fgets ( $this->fp, 512 );
$this->show_debug($this->lastmessage, "in");
if(!ereg("^$code", $this->lastmessage))
return false;
else
return true;
}
//邮件发送处理
function send( $to,$from,$subject,$message) {
//连接服务器
$this->lastact="connect";
$this->show_debug("连接到SMTP 服务器: ".$this->smtp, "out");
$this->fp = fsockopen ( $this->smtp, $this->port );
if ( $this->fp ) {
$this->set_socket_blocking( $this->fp, true );
$this->lastmessage=fgets($this->fp,512);
$this->show_debug($this->lastmessage, "in");
if (! ereg ( "^220", $this->lastmessage ) ) {
return false;
}else{
$this->lastact="HELO " . $this->welcome . "\n";
if(!$this->do_command($this->lastact, "250")){
fclose($this->fp);
return false;
}
$this->lastact="MAIL FROM: $from" . "\n";
if(!$this->do_command($this->lastact, "250")){
fclose($this->fp);
return false;
}
$this->lastact="RCPT TO: $to" . "\n";
if(!$this->do_command($this->lastact, "250")){
fclose($this->fp);
return false;
}
//开始发送邮件正文
$this->lastact="DATA\n";
if(!$this->do_command($this->lastact, "354")){
fclose($this->fp);
return false;
}
//开始处理邮件主题头
$head="Subject: $subject\n";
if(!empty($subject) && !ereg($head, $message)){
$message = $head.$message;
}
//开始处理邮件From头
$head="From: $from\n";
if(!empty($from) && !ereg($head, $message)) {
$message = $head.$message;
}
//开始处理邮件To头
$head="To: $to\n";
if(!empty($to) && !ereg($head, $message)) {
$message = $head.$message;
}
//处理结束串
if(!ereg("\n\.\n", $message))
$message .= "\n.\n";
$this->show_debug($message, "out");
fputs($this->fp, $message);
$this->lastact="QUIT\n";
if(!$this->do_command($this->lastact, "250")){
fclose($this->fp);
return false;
}
}
return true;
}else{
$this->show_debug("连接失败!!", "in");
return false;
}
}
}
?>

使用socket发送邮件示例:

include ("./sendmail.class.php");
$mail = new sendmail();
$email = "您好,这是一个测试邮件!";
$sendmail = new send_mail("smtp.mail.126.com","PHPBOOK",true); //显示调示信息
if($mail->send("[email protected]", "[email protected]", "测试SOCKET邮件", $email)) {
echo "发送成功!
";
}else{
echo "发送失败!
";
}
?>

⑵ 如何在Linux下发送外部邮件

配置mail.rc 等于是foxmail之类,使用163邮箱外发邮件。
你可以发给任意其他邮箱,只要邮箱真实存在,收到邮件后,看到的发件人是 [email protected]
配置mail.rc就是为了不使用postfix这种服务资源的,和重启postfix没关系

⑶ Linux系统如何发送邮件

mail -s "Hello from linuxde.net by shell" [email protected]
hello,this is the content of mail.
welcome to www.linuxde.net

第一行是输入的命令,-s表示邮件的主题,后面的[email protected]则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的两行。当邮件正文输入完成后,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。

⑷ linux 终端下用命令模式发怎么发测试邮件

Ubuntu下使用mail命令发送邮件

在备份数据时,需要每天登录服务器来查看备份是否成功。所以学习了下linux下如何通过shell来给自己邮箱发送邮件,这里以ubuntu为例,使用mail命令来进行外部邮件的发送。mail命令的语法如下:

Usage: mail

[-iInv
www.2cto.com
]

[-s subject

]

[-c cc-addr

]

[-b bcc-addr

] to-addr ...

[-- sendmail-options ...

]
mail

[-iInNv

]

-f

[name

]
mail

[-iInNv
www.2cto.com
]

[-u user

]

使用mail命令发送邮件,有如下三种方式:

1、直接使用shell当编辑器

mail
www.2cto.com
-s

"test" davis

@gmail .com

hello,davis

welcome to you!

第一行是输入的命令,-s表示邮件的主题,后面的[email protected]则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的两行。当邮件正文输入完成后,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。
www.2cto.com
2、使用管道进行邮件发送

echo

"hello,davis.\n This is a test mail"
www.2cto.com
| mail

-s

"test" davis

@gmail .com

使用管道直接敲入这行命令即可完成邮件的发送,其中echo后的是邮件正文。

3、使用文件进行邮件发送

mail
www.2cto.com
-s

"Hello davis" davis

@gmail .com

< mail.txt

使用上面的命令后,我们就可以把mail.txt文件的内容作为邮件的内容发送给[email protected]了。

还有些其他的参数就不再介绍。

⑸ 求助:如何在Linux下发送邮件

Linux服务器发送邮件一般都是基于sendmail进行的,sendmail服务器提供对外的邮件发送功能。

1.安装sendmail服务器安装方法:

#sudoapt-getinstallsendmail

2.然后通过ps查看是否有sendmail进程,如果存在,则安装成功:

#ps-ef|grepsendmail
root12821013:39?00:00:00sendmail:MTA:acceptingconnections

3.成功安装sendmail后,就可以向邮件账户发送邮件了,编辑如下文件a.sh,通过chmod 更改权限后执行就可以。

#!/bin/bash
/usr/sbin/sendmail-t<<EOF
From:Mailtest
Sender:
To:[email protected]
Cc:[email protected]
Subject:mailtesting
----------------------------------
Thisisthemailcontent...
muhaha
---------------------------------
EOF

⑹ Linux下如何自动发送 邮件

首先发送邮件的使用的是sendmail,所以sendmail的service需要装好
然后发送邮件使用命令mail XXX
最后把这个命令放到cron job中设好时间就可以定时自动发送邮件了

⑺ linux 下如何发送带附件的邮件

如果这两个都不能用,那么可以用 mail命令。如果你能确认你的邮件服务器支持 8-bit 的字节, 可以直接用 cat <附件文件名 | mail <邮件地址 不过很多邮件服务器不支持 8-bit 字节,所以最好使用 uuencode 命令。先写好邮件, 比如叫 mymail, 然后uuencode <附件文件名 <附件文件名 mymail 或者cat <附件文件名 | uuencode <附件文件名 mymail 然后编辑你的 mymail 文件, 在前面写上信的正文。 然后寄出。收到信后, 把信中属于 mymail 的部分拷贝出来, 存为 themail.uue。如果对方是在 windows 下, 就可以用 winzip 7.0 解压, 即可得到附件。
如果对方在 linux 下, 可以用 uudecode 还原:uudecode -o <附件文件名 themail.uue cat <附件文件名 | mail <邮件地址 如果有多个文件要处理, 那么就重复执行上述步骤, 不过这样收到邮件后对每个邮件需要分别处理。当然压缩一下会得到更好的效果, 这样邮件长度会大大降低。 附件文件名就是压缩后的文件名。 老大,这样不是很麻烦,有没有像这样的 mail -s hello -xx /tmp/ss.exe [email protected] 没有 用pine,很简单的. 一般redhat都带. way1: uuencode file1 file1 | mail -s "title" mail@address way2: mutt -s "title" -a /dir/file1 mail@address 上面的方法2会启动编辑器来写正文,也可以先编辑好邮件内容,mailcontent.txt # cat mailcontent.txt | mutt -s "title" -a attachfile1 mail@address 就不会启动编辑器了。 way1: uuencode file1 file1 | mail -s "title" mail@address 执行此命令后没很久都没有反应, way2: mutt -s "title" -a /dir/file1 mail@address 系统中没有mutt这个东东,我的是bsd4.7 uuencode file1 file1 | mail -s "asdf" [email protected] 没反应? 是不是你的file1太大啦?编码要很久? 我也是从人家那里学到的,而且成功地发送了不下一百封信。

⑻ 如何在Linux下发送邮件及相关知识点

[root@ProxyServer ~]# mail -s "test" [email protected]
dfdafd
dfadf
fadf
EOT

⑼ 如何在Linux命令行中通过SMTP服务器发送电子邮件

假定你想配置一个 Linux 应用,用于从你的服务器或桌面客户端发送邮件信息。邮件信息可能是邮件简报、状态更新(如 Cachet)、监控警报(如 Monit)、磁盘时间(如 RAID mdadm)等等。当你要建立自己的 邮件发送服务器 传递信息时 ,你可以替代使用一个免费的公共 SMTP 服务器,从而避免遭受维护之苦。

谷歌的 Gmail 服务就是最可靠的 免费 SMTP 服务器 之一。想要从应用中发送邮件通知,你仅需在应用中添加 Gmail 的 SMTP 服务器地址和你的身份凭证即可。

使用 Gmail 的 SMTP
服务器会遇到一些限制,这些限制主要用于阻止那些经常滥用服务器来发送垃圾邮件和使用邮件营销的家伙。举个例子,你一次只能给至多 100
个地址发送信息,并且一天不能超过 500
个收件人。同样,如果你不想被标为垃圾邮件发送者,你就不能发送过多的不可投递的邮件。当你达到任何一个限制,你的 Gmail
账户将被暂时的锁定一天。简而言之,Gmail 的 SMTP 服务器对于你个人的使用是非常棒的,但不适合商业的批量邮件。

说了这么多,是时候向你们展示 如何在 Linux 环境下使用 Gmail 的 SMTP 服务器 了。

Google Gmail SMTP 服务器设置

如果你想要通过你的应用使用 Gmail 的 SMTP 服务器发送邮件,请牢记接下来的详细说明。

邮件发送服务器 (SMTP 服务器): smtp.gmail.com
使用认证: 是
使用安全连接: 是
用户名: 你的 Gmail 账户 ID (比如 "alice" ,如果你的邮箱为 [email protected]
密码: 你的 Gmail 密码
端口: 587

确切的配置根据应用会有所不同。在本教程的剩余部分,我将向你展示一些在 Linux 上使用 Gmail SMTP 服务器的应用示例。

从命令行发送邮件

作为第一个例子,让我们尝试最基本的邮件功能:使用 Gmail SMTP 服务器从命令行发送一封邮件。为此,我将使用一个称为 mutt 的命令行邮件客户端。

先安装 mutt:

对于 Debian-based 系统:
$ sudo apt-get install mutt

对于 Red Hat based 系统:
$ sudo yum install mutt

创建一个 mutt 配置文件(~/.muttrc),并和下面一样,在文件中指定 Gmail SMTP 服务器信息。将 替换成自己的 Gmail ID。注意该配置只是为了发送邮件而已(而非接收邮件)。
$ vi ~/.muttrc
set from = "@gmail.com"set realname = "Dan Nanni"set smtp_url = "smtp://@smtp.gmail.com:587/"set smtp_pass = ""

一切就绪,使用 mutt 发送一封邮件:
$ echo "This is an email body." | mutt -s "This is an email subject" [email protected]

想在一封邮件中添加附件,使用 "-a" 选项
$ echo "This is an email body." | mutt -s "This is an email subject" [email protected] -a ~/test_attachment.jpg

使用 Gmail SMTP 服务器意味着邮件将显示是从你 Gmail 账户发出的。换句话说,收件人将视你的 Gmail 地址为发件人地址。如果你想要使用自己的域名作为邮件发送方,你需要使用 Gmail SMTP 转发服务。

当服务器重启时发送邮件通知

如果你在 虚拟专用服务器(VPS)
上跑了些重要的网站,建议监控 VPS 的重启行为。作为一个更为实用的例子,让我们研究如何在你的 VPS
上为每一次重启事件建立邮件通知。这里假设你的 VPS 上使用的是 systemd,并向你展示如何为自动邮件通知创建一个自定义的 systemd
启动服务。

首先创建下面的脚本 reboot_notify.sh,用于负责邮件通知。
$ sudo vi /usr/local/bin/reboot_notify.sh

#!/bin/sh

echo "`hostname` was rebooted on `date`" | mutt -F /etc/muttrc -s "Notification on `hostname`" [email protected]
$ sudo chmod +x /usr/local/bin/reboot_notify.sh

在这个脚本中,我使用 "-F" 选项,用于指定系统级的 mutt 配置文件位置。因此不要忘了创建 /etc/muttrc 文件,并如前面描述的那样填入 Gmail SMTP 信息。

现在让我们创建如下一个自定义的 systemd 服务。
$ sudo mkdir -p /usr/local/lib/systemd/system$ sudo vi /usr/local/lib/systemd/system/reboot-task.service

[Unit]
Description=Send a notification email when the server gets rebooted
DefaultDependencies=no
Before=reboot.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/reboot_notify.sh

[Install]
WantedBy=reboot.target

在创建服务后,添加并启动该服务。
$ sudo systemctl enable reboot-task$ sudo systemctl start reboot-task

从现在起,在每次 VPS 重启时,你将会收到一封通知邮件。

通过服务器使用监控发送邮件通知

作为最后一个例子,让我展示一个现实生活中的应用程序,Monit,这是一款极其有用的服务器监控应用程序。它带有全面的 VPS 监控能力(比如 CPU、内存、进程、文件系统)和邮件通知功能。

如果你想要接收 VPS 上由 Monit 产生的任何事件的邮件通知,你可以在 Monit 配置文件中添加以下 SMTP 信息。

set mailserver smtp.gmail.com port 587
username "" password ""
using tlsv12

set mail-format {
from: @gmail.com
subject: $SERVICE $EVENT at $DATE on $HOST
message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION.

Yours sincerely,
Monit
}

# the person who will receive notification emails
set alert [email protected]

这是一个因为 CPU 负载超载而由 Monit 发送的邮件通知的例子。

⑽ 如何在Linux下使用mail命令发送邮件到外部

1、首先你得开启25端口,邮件服务器可以用sendmail或postfix,因为发件人是Received: from localhost.localdomain有些邮箱可能会拒绝或当作垃圾邮件
2、发送内容
cat a.txt|mail youremail
3、发送附件
yum -y install sharutils
uuencode a.txt a.txt |mail -s ‘subject’ youremail

阅读全文

与linux命令发送邮件相关的资料

热点内容
滴滴app有青桔优惠券怎么用 浏览:123
删哪几个文件夹加速 浏览:28
创建电影源码爬取项目 浏览:453
java多余的空格 浏览:83
手机软件连接云服务器 浏览:888
内圆弧编程实例 浏览:48
饼干pdf 浏览:423
kylin源码大全 浏览:687
android构建工具 浏览:422
zigy命令行选项不兼容 浏览:561
加密系统能录屏吗 浏览:190
安卓淘宝点进去跳链接如何关闭 浏览:786
u盘加密了手机读取不了 浏览:947
oracle11g启动命令 浏览:931
怎么把视频传到自己的文件夹 浏览:700
福州电动车在哪个app上摇号 浏览:818
礼书PDF 浏览:667
什么app看本子 浏览:394
如何学好编译语言 浏览:591
平面编程和切削 浏览:704