我家里有一台电脑,我无法上班。我希望能够查看家用电脑产生的工作结果。我想出的最好的想法是在我的家用计算机上运行的自动脚本,在完成后通过电子邮件将结果(来自文本文件或stderr / out)发送给自己。
我很擅长使用bash(我有一台 linux 机器)和java,所以使用其中一个或两个的答案都是理想的,但是如果有更简单的东西也可以。
我通常使用gmail,但也有雅虎邮箱。
我的问题是:解决这个问题的基本步骤是什么?我可以做一些细节,但不能真正了解这样的事情是如何工作的。
请帮忙。
JBU
答案 0 :(得分:3)
这里的一些步骤一开始可能看起来很奇怪,但理由是这样 在脚注中应该有希望解释原因。
首先在gmail上创建一个备用帐户,您只能用它
发送邮件。例如,如果您的普通帐户为user@gmail.com
,
使用新创建的密码创建帐户user.noreply@gmail.com
您将仅用于此帐户[1]。
设置新帐户以将所有电子邮件转发到普通帐户[2] 在帐户设置下,您应该添加所有其他电子邮件地址 使用[3]。
然后安装ssmtp(在Debian上:aptitude install ssmtp
)并编辑ssmtp的配置文件/etc/ssmtp/ssmtp.conf
:
root=user@gmail.com mailhub=smtp.gmail.com:587 UseSTARTTLS=YES AuthUser=user.noreply AuthPass=passwdusedonlyforthisaccount FromLineOverride=YES
并通过编辑/etc/ssmtp/revaliases
配置本地邮件传递
假设您的本地登录名为localuser
:
root:user@gmail.com:smtp.gmail.com:587 localuser:user@gmail.com:smtp.gmail.com:587
确保所有用户都可以读取这两个配置文件 应该能够发送电子邮件[4]。
通过例如测试设置mailx
(关于Debian:aptitude install bsd-mailx
):
echo 'testing, one, two' | mailx -s 'test 1' user@gmail.com
希望这有帮助。
[1]每个人都可以看到新的Gmail用户名和密码 可以登录您的计算机,因此您不希望使用此帐户 在任何方面都很重要,这意味着你可以立即关闭它 有人应该访问它。
[2]如果您发送的某些电子邮件会反弹给您,您可能想知道
关于它,实际上有人会乐意回复
来自johnsmith.noreply
的电子邮件。
[3]如果Gmail无法识别地址,Gmail会在电子邮件中重写From
标题。
[4] Ssmtp作为发送电子邮件的本地用户运行,以便用户需要 读取对配置文件的访问权限。
答案 1 :(得分:2)
在我使用过的任何Linux上,从命令行发送邮件很简单:
mail -s "My subject here" recipient@wherever.com <message_body.txt
AFAIK这是sendmail的前端,您必须配置sendmail才能将邮件转发到您的ISP邮件服务器。
答案 2 :(得分:1)
您无法通过排除“远程支持”选项的工作来访问您的家庭计算机。
您可以访问互联网上的其他计算机吗?如果是这样,您只需设置一个在线存储选项,然后从家用计算机ftp结果。这比编写脚本或代码以生成附件或其他任何内容的电子邮件要简单得多。
然后,您可以从工作中查看外部计算机。
答案 3 :(得分:1)
如果您有netcat,此命令将向您发送电子邮件:
给定这种格式的文件(来自维基百科):
HELO relay.example.org
MAIL FROM:<bob@example.org>
RCPT TO:<alice@example.com>
RCPT TO:<theboss@example.com>
DATA
From: "Bob Example" <bob@example.org>
To: Alice Example <alice@example.com>
Cc: theboss@example.com
Date: Tue, 15 Jan 2008 16:02:43 -0500
Subject: Test message
Hello Alice.
This is a test message with 5 headers and 4 lines in the body.
Your friend,
Bob
.
QUIT
然后将它netcat到您有权访问的SMTP服务器:
nc mail.somewhere.com 25 < file.txt
然后发送电子邮件。您可以看到如何创建Java程序来为您执行此操作(只需执行命令)。
答案 4 :(得分:0)
传统上,对于像Linux这样的unix系统,你会在处理发送电子邮件的计算机上安装一个MTA,一个邮件传输代理。
这可能是一个完整的电子邮件服务器,如exim,或像ssmtp这样简单的东西,它只会将消息发送到中继的SMTP服务器,例如由ISP提供的。
这不再是必要的,因为像Thunderbird这样的邮件客户端包含他们自己的MTA,就像Windows上的邮件客户端一样。
但是,如果没有其他原因,系统中的其他内容(如cron)希望能够发送电子邮件,则您的发行版可能会默认安装一些MTA或其他MTA。通常会有一个名为sendmail的命令行工具(sendmail是原始的MTA [引用需要],其他MTA保持与其接口的兼容性,它有点成为标准),可以从shell脚本发送e-邮件。
答案 5 :(得分:0)
我的解决方案假设您有一个可用的SMTP服务器,它允许您以编程方式发送电子邮件。或者,您可以使用sendmail的本地安装,这通常适用于大多数Linux发行版。
创建一个独立的java程序,用于监视家庭计算机将文件保存到的目录。使用JavaMail API附加文件并将其发送到您希望的任何电子邮件。
如果你也熟悉Spring Framework,它有一个很好的抽象层来处理JavaMail并使这种事情变得微不足道。
答案 6 :(得分:0)
当然,您的家庭ISP也可能阻止了公共SMTP端口。