本人接觸php已有一年,公司需要匯入excel然後傳送給每個人工資條,所以我就借助各方面資源寫了這些,現在公司已經開始使用了,如有一些地方寫得有問題或者很糟糕的地方,還請各位大神給出指點,小弟再修正.
思路是使用多個郵箱 輪流 依次
給多個員工傳送郵件,是為了防止因為短時間大批量傳送郵件被封,我也不知道這樣管不管用,但是我是這麼做的,比如有郵箱m1,m2,m3.員工有12345,那麼傳送的順序是這樣的m1=>1,m2=>2,m3=>3,m1=>4,m2=>5
這篇文章省略了excel的匯入,dao層的操作,主要是controller和service層的郵箱選擇並且輪流給每位員工傳送郵件的操作,看起來比較簡陋,我個人感覺功能應該沒什麼太大的問題
郵箱裡邊這個東西要先開啟,要不然一切都是徒勞
在extend裡邊寫了乙個執行傳送和選擇郵箱的類
控制器,獲取要傳送的資訊和收件人的郵箱,然後引用上邊那個類來執行傳送操作<?php
namespace util;
use phpmailer\phpmailer\phpmailer;
class mail
/*** @return mail|null
* 單例 避免併發衝突
*/static public function instance()
return self::$instance;
}/**
* @param $to_email
* @param $message
* @return array
* @throws \phpmailer\phpmailer\exception
* 傳送郵件
*/public function send($to_name,$to_emails,$message) else
}/**
* @return mixed
* 獲取下乙個郵箱
*/private function getnextemail()else
return $this->emails[$this->current_id];}}
因為工資表的資訊是用excel匯入到資料庫的,每位員工的郵箱也存在這裡邊,所以這裡我就直接在資料庫裡取了
最後感謝我上上任技術經理給了我很大的<?php
use think\controller;
use util\mail as ue;
class mail extends controller;//判斷郵箱是否為空
$chars = "/^([0-9a-za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z](\\.[a-z])?)$/i";
if (!preg_match($chars, $v['mail']))//驗證郵箱合法性
$message = "工資月份
入職時間
姓名基本工資
出勤天數
業績考核
獎金加班時間
薪資變動
請假天數
公休遲到扣款
缺卡扣款
社保扣費
曠工應發工資
個人所得稅扣費
實發工資
";if(empty($message))//判斷內容是否為空
ue::instance()->send($v['name'],$v['mail'],$message);
$wage->editstatus($v['id']);//這個是在傳送完成以後把資料庫裡的乙個字段標識改一下}}
}
工資條群發神器,HR必備!!!
for int i startrow i sendnum startrow i else 接收者郵件集合 email.mailbody createhtml i if email.send else 延時1秒,避免被封 thread.sleep 500 進度條更新 progressbarvalue ...
C Excel匯入工資條群發郵箱
做的乙個小應用,需要的朋友可以參考參考,使用winform實現了乙個匯入excel,工資條的功能。功能已經實現,還不夠完善,大致運用了oledbconnection,smtp oledbconnection來動態獲取excel的資料 smtp發郵件 簡單郵件傳輸協議 mail transfer pr...
使用Excel巨集來群發郵件或工資條
private sub 全自動傳送郵件 click 要能正確傳送並需要對microseft outlook進行有效配置 on error resume next dim rowcount,endrowno dim objmail as mailitem 取得當前工作表與cells 1,1 相連的資料...