我有一个关于通过电子邮件上传文件的一般性问题,因为我根本不知道这是否可行。
我有一个安装了Wordpress的共享网站空间。我们希望通过电子邮件(.pdf,.doc等)增强用户上传文件,发送到特定的电子邮件地址。
如果文件被Wordpress识别并不重要,文件也可以由我自己的.php脚本上传到特定文件夹。
这通常是可能的吗?
当我在网上搜索此问题时,我找到了反向解决方案(发生文件上传时的电子邮件通知)。
答案 0 :(得分:0)
我做了几次,总是有点痛苦。您还应该偶尔登录邮箱进行检查。此外,请记住,您将收到垃圾邮件,格式错误的电子邮件,回复所有电子邮件,以便对此进行说明。
还有趣解码电子邮件正文,因为它有百万种风格,还有嵌入式图形。
这是我用来监控具有基于文本的警报的邮箱。
class someEmailClass
function inbox() {
if( DEBUG) $GLOBALS['log']->Info( __CLASS__ .'.'. __FUNCTION__ .'()' );
$this->msg_cnt = imap_num_msg($this->conn);
$in = array();
imap_headers( $this->conn); // to boost performance somehow
$emails_to_fetch = $this->batchSize;
if( $this->batchSize > $this->msg_cnt)
// if fewer inbox items than batch size
{
$emails_to_fetch = $this->msg_cnt;
}
for($i = 1; $i <= $emails_to_fetch; $i++) {
$email = array(
'index' => $i,
'header' => imap_headerinfo($this->conn, $i),
'structure' => imap_fetchstructure($this->conn, $i)
);
$body = imap_fetchbody( $this->conn, $i, "1.1");
if ($body == "") {
$body = imap_fetchbody( $this->conn, $i, "1");
}
$email['body'] = $body;
$email['body2'] = self::email_body_decode( $body, (int)$email['structure']->encoding );
$in[] = $email;
}
$this->inbox = $in;
$this->Errors = imap_errors();
}
public static function email_body_decode( $data, $code =0)
{
switch( $code){
// case 0:
// return imap_utf7_decode($data);
case 1:
return imap_utf8($data);
case 3:
return imap_base64($data);
case 4:
return imap_qprint($data);
default:
return $data;
}
}
// http://www.php.net/manual/en/function.imap-open.php
function connect_debug()
{
try {
$this->conn = (imap_open("{mail.domain.com:993/imap/notls/ssl/novalidate-cert}INBOX", <user>, <pass>));
if( $this->conn == false) {
$err = 'Could not connect to email server ['. imap_last_error() .']';
$this->Errors[] = $err;
throw new \Exception( $err);
}
}
catch( \Exception $ex){
if( DEBUG) $GLOBALS['log']->Error( $ex );
throw $ex;
}
}
}
它不完整,但至少在您弄清楚如何连接到电子邮件服务器上的邮箱之后,您可以使用邮件正文