0

codeigniter でメールを送信しようとしています。私は最初にモデルで独立した関数を作成しました。それはコントローラーで対応しており、非常にうまく機能しました。メールはyahooとgmailの両方で送受信されました。ただし、データベースから電子メール アドレス (受信者) を選択する別の関数で同じコードを使用しようとすると、電子メールが正常に送信されたというメッセージが表示されますが、実際には yahoo または gmail に配信されません。何が問題なのですか?スパム/バルクメールに配信することさえありません。

機能したコードと失敗したコードは次のとおりです。

モデル関数は

function sendMail()
{
   $to = "mymail@yahoo.com"; 
       $subject = "My Sublect"; 
       $messagetext= "stop distubbing me and work!";
       $config=array(
      'protocol'=>'smtp',
      'smtp_host'=>'mail.mydomail.co.ug',
      'smtp_port'=>25,
      'smtp_user'=>'myname@mydomail.co.ug',
      'smtp_pass'=>'mypass'
    );
    $this->load->library("email",$config);
    $this->email->set_newline("\r\n");
    $this->email->from("myname@mydomail.co.ug","Joyce");
    $this->email->to($to); 
    $this->email->subject($subject); 
    $this->email->message($messagetext); 
    if($this->email->send())
    {
        echo "Mail send successfully!";
    }
    else
    {
        show_error($this->email->print_debugger());
    }
}

コントローラーのfcn

function sendmail()
{
    $this->load->model('customer_model');
    $this->customer_model->sendMail();
}

ただし、動作に失敗したのは以下のとおりです

function customer()
{
    $this->load->library('email');
    $this->load->database();
    $data = array(
              'name'=>$this->input->post('name'),
              'contact'=>$this->input->post('contact'),
              'entity'=>$this->input->post('entity'),
              'sector'=>$this->input->post('sector'),
              'inquiry'=>$this->input->post('inquiry'),
         'nature_of_inquiry'=>$this->input->post('nature_of_inquiry'),
          'status'=>$this->input->post('status'),

                );
    $this->db->insert('customers',$data);
    $id = $this->db->insert_id();
    $refno = date('d/m/Y').'-C'.str_pad($id, 4, "0", STR_PAD_LEFT);

$this->db->query("UPDATE customers set refno = '".$refno."' WHERE id = '".$id."'"); 

$query=$this->db->query("select entity,name,status,contact from customers where id ='".$id."'");
foreach ($query->result() as $row)
{
    $entity = $row->entity;
    $phone = $row->contact;
    $name = $row->name;
    $status = $row->status;
}   

$query1=$this->db->query("select phone, email from services where entity = '".$entity."'");
     foreach ($query1->result() as $row)
{

    $to = $row->email;
}   
    $sms ="Dear $name, your request/compaint has been $status";
    //$emailtext ="yo company has been refferenced by servicecops.";
   //$this->sendSMS(test,$phone,$sms);
   //$subject = "Servicecops Reminder";
   $config=array(
      'protocol'=>'smtp',
      'smtp_host'=>'mail.mydomain.co.ug',
      'smtp_port'=>25,
      'smtp_user'=>'myname@mydomain.co.ug',
      'smtp_pass'=>'mypass',
      'mailtype'=>'html'
    );
    $this->load->library("email",$config);
    $this->email->set_newline("\r\n");
    $this->email->from("myname@mydomain.co.ug","Joyce");
    $this->email->to($to); 
    $this->email->subject("my subject"); 
    $this->email->message("yo company has been refferenced by me"); 
    if($this->email->send())
    {
        echo "Mail send successfully!";
        echo $to;
    }
    else
    {
        show_error($this->email->print_debugger());
    }

    return $this;
  }
4

3 に答える 3

4

最初に、データベースからメールを適切に取得しているかどうかを確認してください。はいの場合は、スパムをチェックインします。それは私が推測する問題を解決するでしょう。

于 2012-12-19T11:09:30.437 に答える
1

みんな私は問題を発見しました。同じ関数でメール ライブラリを 2 回定義したため、メッセージが yahoo と gmail の受信トレイに到達しませんでした。関数の冒頭で、私は入れました。$this->load->library('email'); そしてこれが真ん中。$this->load->library("email",$config);

于 2012-12-20T11:28:58.283 に答える
0

ドメイン名の代わりに URL (例: 123.117.116.27/test/email/) で実行中に IP アドレスを使用すると、ほとんどのメールがスパムになります。そのため、迷惑メールフォルダを確認してください。

于 2012-12-19T11:12:04.050 に答える