zoukankan      html  css  js  c++  java
  • shell 脚本发送邮件

    有时候会使用脚本完成一系列的自动化工作,工作完成后还需要邮件通知相关人员,此时可以使用第三方的工具:SendEmail,最新版本sendEmail-v1.56.tar.gz
    下载地址:http://caspian.dotconf.net/menu/Software/SendEmail/

    sendEmil的使用范例:

    #!/bin/bash
    email_reciver="oneway@163.com lin@126.com"
    #发送者邮箱
    email_sender=373850874@qq.com
    #邮箱用户名
    email_username=373850874
    #邮箱密码
    #使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务,其次发送邮件的密码需要使用在开启POP3/SMTP服务时候腾讯提供的第三方客户端登陆码。
    email_password=mialbjhzsmuobigf
    
    file1_path="附件一路径"
    file2_path="附件二路径"
    
    #smtp服务器地址
    email_smtphost=smtp.qq.com
    
    email_title="iOS客户端更新"
    email_content="谢谢!"
    
    ./sendEmail -f ${email_sender} -t ${email_reciver} -s ${email_smtphost} -u ${email_title} -xu ${email_username} -xp ${email_password} -m ${email_content} -a ${file1_path} ${file2_path} -o message-charset=utf-8

    问题 1

    要使用脚本发送邮件,必须设置发送邮箱开启IMAP/SMTP服务。否则将会报错。
    IMAP,即Internet Message Access Protocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上获取邮件的信息、下载邮件等。IMAP与POP类似,都是一种邮件获取协议。

    IMAP和POP有什么区别?
    POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件、标记已读等),这是不会反馈到服务器上的,比如:您通过电子邮件客户端收取了QQ邮箱中的3封邮件并移动到了其他文件夹,这些移动动作是不会反馈到服务器上的,也就是说,QQ邮箱服务器上的这些邮件是没有同时被移动的 。但是IMAP就不同了,电子邮件客户端的操作都会反馈到服务器上,您对邮件进行的操作(如:移动邮件、标记已读等),服务器上的邮件也会做相应的动作。也就是说,IMAP是“双向”的。
    同时,IMAP可以只下载邮件的主题,只有当您真正需要的时候,才会下载邮件的所有内容。

    问题 2

    我使用的系统是Mac OSX EI Capitan, 运行命令时报错如下:

    MaxOS: invalid SSL_version specified at /System/Library/Perl/Extras
    /5.18/IO/Socket/SSL.pm line 368. 

    解决方案:
    打开文件: /usr/share/perl5/IO/Socket/SSL.pm
    找到: m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1(?:_?[12])?))$}i
    替换为:m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i

    可是接下来的问题又出现了,当你修改完成后却无法保存,被告知权限不够,可是你明明使用的是sudo,超级管理员权限。

    这是由于 OSX EI Capitan之后苹果采用了“Rootless”技术来保护系统内核,用户将没有权限操作系统文件。但是不要紧
    苹果并没有把路封死。
    执行以下命令:

    % dsenableroot
    username = wangwei
    user password:
    root password:
    verify root password:
    
    dsenableroot:: ***Successfully enabled root user.

    命令执行后可以使sudo 获取正真的Root用户权限。sudo root用户的密码就是你刚刚设置的密码。

    如果你希望自己的账户拥有root权限,那么你也可以通过添加 -U 参数来达到这一目的:

    dsenableroot -u wangwei
    #其中wangwei为你的用户名

    此时你就可以更改/usr/share/perl5/IO/Socket/SSL.pm了。

    关于root权限问题,苹果既然使用了Rootless技术来保护内核虽然给我们造成了一些麻烦,但是一定是有他的道理的,比如更加安全,防止了误操作等。
    所以我们获取到最高权限后,最好再取消Root权限

    取消用户的Root权限
    取消用户Root权限只需要在命令后加参数:-d (disable)

    % dsenableroot -d
    username = wangwei (或者是root)
    user password:
    
    dsenableroot:: ***Successfully disabled root user.

    取消特定用户的Root权限:

    dsenableroot -d -u wangwei

    关闭“Rootless”

    sudo nvram boot-args="rootless=0"; sudo reboot
  • 相关阅读:
    matplotlib 进阶之origin and extent in imshow
    Momentum and NAG
    matplotlib 进阶之Tight Layout guide
    matplotlib 进阶之Constrained Layout Guide
    matplotlib 进阶之Customizing Figure Layouts Using GridSpec and Other Functions
    matplotlb 进阶之Styling with cycler
    matplotlib 进阶之Legend guide
    Django Admin Cookbook-10如何启用对计算字段的过滤
    Django Admin Cookbook-9如何启用对计算字段的排序
    Django Admin Cookbook-8如何在Django admin中优化查询
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/13043607.html
Copyright © 2011-2022 走看看