最新消息:阿里云双12优惠,史上最低折扣。

Linux系统发送邮件失败?如何正确发送?

服务器租用 aliyun 217浏览

JSON如何被定义?在不同编程语言中如何应用?

在编程语言中经常使用的JSON是什么,如何被定义的?以及在包括C、C++、C#、Java、JavaScript、Perl、Python等不同编程语言中如何得到应用的?

Linux系统由于免费开源与安全性好的优点而备受喜爱。linux系统与windows系统在使用上是有区别,对于日常发送邮件,linux出现无法发送邮件或发送邮件失败的问题,那么在linux下如何发送邮件?

一、使用mail命令

mail命令是mailutils(On Debian)或mailx(On RedHat)包中的一部分,可以使用他在命令行里面发送消息。如果你的系统没有安装mail命令,可以使用下面的方式安装:

$ sudo apt-get install mailutils (On Debian)

# yum install mailx (On RedHat or CentOS)

使用mail命令来发送带附件的邮件,如下:

echo “这里输入你邮件内容” | mail -s “邮件标题” -a file.txt 59090939@qq.com

在上面的命令中,-s 参数用于指定消息主题;-a 参数指定需要发送的附件路径,貌似这个不能发送多个附件,-v参数显示详细的发送过程。通过以下两种方法来加大附件大小的限制:

第一种:

[root@xiao ~]$ postconf message_size_limit

message_size_limit = 51200000

echo “message_size_limit = 102400000” >> /etc/postfix/main.cf && service postfix reload

Reloading Postfix configuration…done.

第二种:

[root@xiao ~]$ postconf -e message_size_limit=302400000

[root@xiao ~]$ service postfix restart

Shutting down postfix: [ OK ]

Starting postfix: [ OK ]

[root@xiao ~]$ postconf message_size_limit

message_size_limit = 302400000

两种方法都可以设置

二、msmtp客户端的方式

1、下载安装msmtp

wget https://marlam.de/msmtp/releases/msmtp-1.6.7.tar.xz

tar -xvJf msmtp-1.6.7.tar.xz

ls

cd msmtp-1.6.7

./configure –prefix=/usr/local/msmtp

make && make install

2、配置msmtp账号

cd /usr/local/msmtp

mkdir etc #配置文件目录和配置文件都要自己建

cd etc

手动创建配置文件vi msmtprc

# Set default values for all following accounts.

defaults

logfile /usr/local/msmtp/msmtp.log

# The SMTP server of the provider.

account default

#你的发送邮件服务器

host smtp.126.com

port 25

#要从哪个邮箱发出

from xxxx@126.com

#这里如果使用on的话会报 “msmtp: cannot use a secure authentication method”错误

auth login

tls off

#邮箱用户名

user xxxx@126.com

#邮箱用户名

#邮箱密码,这里可是明文的,如果你觉得不安全可以把文件改为600属性

password xxxxxxx

# Set a default account

account default: test

Esc,shift+: 进入命令模式,输入x,保存退出。

由于password是明码,所以我们需要修改此文件的权限 chmod 600 etc/msmtprc

3、测试

/usr/local/msmtp/bin/msmtp youremail@test.com

输入任意字符,然后按Ctrl+D退出,查看邮件是否收到。

由于设置了日志,可以到 /usr/local/msmtp/msmtp.log,查看日志,发信成功失败都会有记录。

按ctrl+d结束

但是它不能够发送附件,所以安装mutt

4、安装mutt

vi /etc/Muttrc ,编辑mutt的总设置,修改以下几行

set from=”发送邮件地址”

set sendmail=”/usr/local/msmtp/bin/msmtp”

set use_from=yes

set realname=”发件人”

set editor=”vi”

发件地址最好与msmtp设置的账号相同,否则可能会出错。

5、测试一下mutt是否有效

echo “测试测试” | mutt -s “测试” 测试邮件地址

echo “testmail” |mutt -s “test” [-a /etc/hosts] test@163.com

这里的-a 是指添加附件,如果是多个附件的话就 多加几个 -a 文件名

可以使用mutt进行邮件备份等工作了,结合cron使用,可以实现的功能相当多。

三、使用python脚本发送邮件

脚本如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# Author:Wangj

import smtplib

from email.mime.text import MIMEText

import sys

mail_host = ‘smtp.126.com’

mail_user = ‘username’

mail_pass = ‘passwd’

mail_postfix = ‘126.com’

def send_mail(to_list,subject,content):

me = “test”+”<“+mail_user+”@”+mail_postfix+”>”

msg = MIMEText(content, ‘plain’, ‘utf-8’)

msg[‘Subject’] = subject

msg[‘From’] = me

msg[‘to’] = to_list

try:

s = smtplib.SMTP()

s.connect(mail_host)

s.login(mail_user,mail_pass)

s.sendmail(me,to_list,msg.as_string())

s.close()

return True

except Exception,e:

print str(e)

return False

if __name__ == “__main__”:

send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

新建send.py文件,将以上代码复制编辑,设置发件用户、密码。

然后验证脚本是否可以正常发送邮件 ./send.py xxx@139.com hello test 三个参数分别是:收件人邮箱、邮箱主题、邮箱内容

四、使用系统自带邮件工具发送电子邮件

1.打开电脑的Linux系统,再检查邮件工具。

2.配置邮件地址,再用postconf命令添加邮件地址。

3.设置环路连接,配置ip地址。

4.指定连接的客服机,配置客户机的连接名。

5.发送邮件到本地邮件服务器,设置发送的内容。

6.检查mutt工具和服务,用mutt命令检查发送出去的邮件。

转载请注明:小猪云服务器租用推荐 » Linux系统发送邮件失败?如何正确发送?