PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Friday, January 14, 2022

[FIXED] How to move emails into Custom Post Type?

 January 14, 2022     custom-post-type, email, php, plugins, wordpress     No comments   

Issue

I found this PHP code to extract the emails. Now, I want to move this email into Custom Post type in WordPress. I have created the custom post type name as E-mail Inboxes. Here is the code below of how I extracted the emails:

class Email_reader {

    // imap server connection
    public $conn;

    // inbox storage and inbox message count
    private $inbox;
    private $msg_cnt;

    // email login credentials
    private $server = 'myserver.com';
    private $user   = 'myserver@mail.com';
    private $pass   = 'PASSWORD';
    private $port   = 993; // adjust according to server settings

    // connect to the server and get the inbox emails
    function __construct() {
        $this->connect();
        $this->inbox();
    }

    // close the server connection
    function close() {
        $this->inbox = array();
        $this->msg_cnt = 0;

        imap_close($this->conn);
    }

    // open the server connection
    // the imap_open function parameters will need to be changed for the particular server
    // these are laid out to connect to a Dreamhost IMAP server
    function connect() {
        $this->conn = imap_open('{'.$this->server.'/notls}', $this->user, $this->pass);
    }

    // move the message to a new folder
    function move($msg_index, $folder='INBOX.Processed') {
        // move on server
        imap_mail_move($this->conn, $msg_index, $folder);
        imap_expunge($this->conn);

        // re-read the inbox
        $this->inbox();
    }

    // get a specific message (1 = first email, 2 = second email, etc.)
    function get($msg_index=NULL) {
        if (count($this->inbox) <= 0) {
            return array();
        }
        elseif ( ! is_null($msg_index) && isset($this->inbox[$msg_index])) {
            return $this->inbox[$msg_index];
        }

        return $this->inbox[0];
    }

    // read the inbox
    function inbox() {
        $this->msg_cnt = imap_num_msg($this->conn);

        $in = array();
        for($i = 1; $i <= $this->msg_cnt; $i++) {
            $in[] = array(
                'index'     => $i,
                'header'    => imap_headerinfo($this->conn, $i),
                'body'      => imap_body($this->conn, $i),
                'structure' => imap_fetchstructure($this->conn, $i)
            );
        }

        $this->inbox = $in;
    }

}
$emails = new Email_reader;


echo "<pre>";
    var_dump($emails);

Now I want to add this email to my WordPress Custom Post Type. Thanks in advance.


Solution

$total =  $emails->total_msg(); 

    for ($j=1; $j <= $total; $j++) { 
       $mail =  $emails->get($j);

$post_array = array( 
        'post_content'  => $mail['body'],
        'post_title'    => $mail['header']->subject,
        'post_type'     => 'faqpress_email',
        'post_status'   => 'publish',
        'meta_input'    => array(
            'from'      => $mail['header'] ->fromaddress,
            'email_date'=> $mail['header'] ->Date,   // add post meta as many as you want
            'ticket_id' => $mail['header']->Msgno,
            ),
       );
         wp_insert_post($post_array); 
    }


Answered By - Rohit kc
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing