通过电子邮件

时间:2017-03-10 19:00:56

标签: php wordpress email file-upload

我有一个关于通过电子邮件上传文件的一般性问题,因为我根本不知道这是否可行。

我有一个安装了Wordpress的共享网站空间。我们希望通过电子邮件(.pdf,.doc等)增强用户上传文件,发送到特定的电子邮件地址。

如果文件被Wordpress识别并不重要,文件也可以由我自己的.php脚本上传到特定文件夹。

这通常是可能的吗?

当我在网上搜索此问题时,我找到了反向解决方案(发生文件上传时的电子邮件通知)。

1 个答案:

答案 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;
    }
}

}

它不完整,但至少在您弄清楚如何连接到电子邮件服务器上的邮箱之后,您可以使用邮件正文