顯示具有 Software 標籤的文章。 顯示所有文章
顯示具有 Software 標籤的文章。 顯示所有文章

phpList + 合併列印 + 附加檔案

我把phpList 當作發信軟體在使用,發現以往 word 做不到的事,用 phpList 都可以做到了,也就合併列印寄送Email時,可以附加檔案。

第一步:登入後工具列的 System ➜ CONFIGURE ATTRIBUTES 增加 3 個欄位後 save changes,而原本已存在的使用者也會有這些欄位。
1. Name:公司名稱;Type:textline
2. Name:攤位數;Type:textline
3. Name:金額;Type:textline


第二步:在 Excel 新增相關內容,請記得存成CSV格式。


第三步:選擇工具列的 Subscribers ➜ IMPORT EMAILS ➜ import by uploading a CSV file with emails and additional data。


第四步:新增一個訂閱群組(list):合併列印DEMO。



第五步:選擇上傳CSV檔並設定逗號為欄位分隔字元後,點擊在頁尾的Import Buttom。


第六步:指定相對應的欄位。因為中文匯入會是亂碼,所以以後還是儘量使用英文名稱(第一步),就不會出現這個步驟。


第七步:確認匯入內容無誤後,點選Confirm Import 完成匯入作業。


第八步:查看A公司基本資料,在金額部份因為有逗號(欄位分隔字元),所以後面3個0會被截掉。


第九步:開始一個新的電子報建立新的電子報,在content tag新增下以內容,中括號內為個人基本資料的[欄位名稱]。


在attach tag新增附件檔案

第十步:選擇訂閱群組。在Finish Tag發送後,信件內容就會帶出相對的公司資料


信件內容:

phpList相關設定說明

問題1:遇到登出、儲存設定、編輯新的電子報等操作時,若安裝 phpList 時,預設路徑不是在 DocumentRoot,就要修改phpList 的 pageroot 設定值。(只修改config.php或config_extended.php是沒有用的)
解答:修改 init.php 檔(/var/www/html/mailer/lists/admin/init.php)。
   372 if (!isset($pageroot)) {
   373 $pageroot = '/lists';
   374 $GLOBALS['pageroot'] = '/mailer/lists';


問題2:在編輯電子報時,沒有出現 Attach Tab。

解答:修改 init.php及config_extended.php檔。
init.php 路徑:/var/www/html/mailer/lists/admin/init.php
config_extended.php 路徑:/var/www/html/mailer/lists/config/config_extended.php

init.php:
168 if (!defined("ALLOW_ATTACHMENTS")) define("ALLOW_ATTACHMENTS",1);
config_extended.php:
625 define('ALLOW_ATTACHMENTS',1);
631 define("FILESYSTEM_ATTACHMENTS",1);


問題3:設定上傳圖片目錄(/var/www/html/mailer/uploadimages)權限。
解答:設定權限為776,user 及 group 可讀可寫可執行,other users 僅可讀寫。
# chmod 776 uploadimages/

問題4:移除電子報的logo。
解答:註解以下的程式。
# vim /var/www/html/mailer/lists/admin/sendemaillib.php
233 /*
234 if (!EMAILTEXTCREDITS) {
235 $html["signature"] = $PoweredByImage;
237 $html["signature"] = preg_replace('/src=".*power-phplist.png"/','src="powerphplist.png"',$html["signature"]);
238 } else {
239 $html["signature"] = $PoweredByText;
240 }
241 */


問題5:ProcessQueue 一直處在 submmited 或 Waiting 狀態,還要手動去按 Process the queue 才有動作,而且不管改config.php、config_extension.php或是改程式碼,手動執行完一次後,就會又一直處在 Waiting 狀態。
解答:改用Command Line來執行,並透過排程定期執行。
# crontab -e
*/20 * * * * /usr/bin/php /var/www/html/mailer/lists/admin/index.php -pprocessqueue -c /var/www/html/mailer/lists/config/config.php > /dev/null


問題6:移除在 Email 中的 Track Code,如果 phpList 是安裝在加密目錄下(htaccess),收件者要查看完整內容就會跳出詢問帳密的視窗,因為在HTML格式多了下面這行 Code。
它將使用者代碼以 HTML img TAG 方式傳遞參數至 ut.php 檔(如果理解有誤請高手指教),而 ut.php 檔在加密目錄下,所以才會跳出詢問帳密的視窗。
<img src="http://www.demo.com/mailer/lists/ut.php?u=*****************&amp;m=33" width="1" height="1" border="0" alt=""> 解答:更改 ALWAYS_ADD_USERTRACK 參數值。
# grep -r -i "ALWAYS_ADD_USERTRACK" . //有3個檔案都有這個參數。
 ./config/config_extended.php: define('ALWAYS_ADD_USERTRACK',0); //原始設定是被註解,但開了也沒用,所以不用考慮。
 ./admin/sendemaillib.php: if (ALWAYS_ADD_USERTRACK) {
 ./admin/init.php:if (!defined('ALWAYS_ADD_USERTRACK')) define('ALWAYS_ADD_USERTRACK',1); //改這裡的設定才有用。

# vim init.php
  if (!defined('ALWAYS_ADD_USERTRACK')) define('ALWAYS_ADD_USERTRACK',0);

phpList語系選單只保留英文及繁體中文的選項

只保留英文及繁體中文的選項要在哪裡設定?
  1. 路徑1:/var/www/html/lists/admin/locale
    只保留en及zh_TW的目錄,其他的目錄都刪除,
    並修改目錄中的language_info檔案內容。 #pwd
      /var/www/html/lists/admin/locale/en
    #vim language_info
      name=ENGLISH
      charset=UTF-8

    #pwd
      /var/www/html/lists/admin/locale/zh_TW
    #vim language_info
      name=繁體中文
      charset=UTF-8

  2. 路徑2:/var/www/html/lists/admin/language.php
  3. 只保留en及zh_TW的設定。 ## this array is now automatically build from the file system using the
    ## language_info file in each subdirectory of /locale/
    ## and further on, from the XML data of the translation site
    $LANGUAGES = array(
    "en" => array("english ","UTF-8","UTF-8, windows-1252 "),
    "zh_TW" => array("Traditional Chinese","utf-8","utf-8"),
    );

修改前


修改後


注意事項

下拉式選單中的項目名稱,修改的優先權是 language_info 大於 language.php,也就是說把 language.php 中的 Traditional Chinese 改成繁體中文是沒有效果的,除非該語系的 language.php 不存在。

改變 phpList 預設語言 (Default Language)

方法一

此方法的缺點:無法再切換其他輸入法。
設定檔路徑:/var/www/html/lists/admin/languages.php
在程式碼@session_start();底下加入$_POST['setlanguage'] = 'zh_TW';

if (!empty($GLOBALS["SessionTableName"])) {
require_once dirname(__FILE__).'/sessionlib.php';
}
@session_start();

$_POST['setlanguage'] = 'zh_TW'; // 加入這行程式碼

if (isset($_POST['setlanguage']) && !empty($_POST['setlanguage']) && is_array($LANGUAGES[$_POST['setlanguage']])) {
## just in case
$setlanguage = preg_replace('/[^\w_-]+/','',$_POST['setlanguage']);
$_SESSION['adminlanguage'] = array(
"info" => $setlanguage,
"iso" => $setlanguage,
"charset" => $LANGUAGES[$setlanguage][1],
"dir" => $LANGUAGES[$setlanguage][4],
);
# var_dump($_SESSION['adminlanguage'] );
}
參考資料:http://selainsoft.blogspot.tw/2008/05/phplist-default-language.html


方法二

優點:改善方法一的缺點。
設定檔路徑:/var/www/html/lists/admin/index.php
在開頭加入以下的程式碼: //設定管理者介面預設語言為繁體中文
$deflanguage;
session_start();

if( !isset( $_SESSION['deflanguage'] )){
$_SESSION['deflanguage'] = 1;
$_POST['setlanguage']="zh_TW";
}

VMware-Virtual Network Editor(vmnetcfg.exe)適用 VMware-player-full-7.0.0-2305329 版本(2018/1/3更新)

在VMware-player-full-14.1.0的版本下使用vmnetcfg.exe,vmnetcfg.exe的版本就要從VMware-workstation-14.1.0內提取出來,最簡單的方式就是使用解壓縮軟體(7-Zip、WinRAR...)。
使用7-zip開啟workstation.exe安裝檔,再開啟Workstation.cab,就可以找到vmnetcfg.exe檔案。

==========================================================================================
Virtual Network Editor 是可以設定 VMware Player 網段和網路型態的工具,
但後來比較新的版本都沒有這個工具。

目前可以知道的是在 VMware Workstation 內是附有這個小工具的,
因此解決方案的方法就是下載用指令解壓縮或安裝 VMware Workstation,從裡面把這個小工具拿出來。

據網路上的文章描述,適用 VMware-player-full-7.0.0-2305329 的 Virtual Network Editor,
是 VMware-workstation-11.0.0 以上的版本,
而由於解壓縮時並沒有 core.cab 的檔案(舊文:VMware-自訂網段工具(vmnetcfg.exe)),
因此必需安裝 VMware-workstation 後再到 VMware Workstation 目錄內把 vmnetcfg.exe 複製到 VMware Player 目錄內,就可以指定網段的範圍了。

使用 Regular Expressions 提取 Excel 儲存格內容為Email的字串(In-Cell Function)

因為電子報有近2千封的退信,在Outlook 2013 一封一封的開啟並複製 email address 是非常耗時的,因此才想到用 VBA 來完成這樣的工作。

這個流程分2部份,第1部份是從 Outlook 2013 匯出 CSV 格式的記錄檔,第2部份是在 Excel 中寫入功能模組。

第1部份:從 Outlook 2013 匯出 CSV 格式的記錄檔

  1. 開啟匯入及匯出精靈並選擇『匯出至檔案』

  2. 選擇『逗點分隔值』

  3. 先將退信集中在一個資料夾,再匯出 CSV 檔

  4. 指定儲存路徑及檔名

  5. 只輸出郵件本文到 CSV檔

第2部份:在Excel中寫入功能模組

  1. 點選 Visual Basic

  2. 新增模組

  3. 增加 RE 引用項目:工具 ➠ 設定引用項目 ➠ Microsoft VBScript Regular Expression 5.5 打勾

  4. 在模組下增加以下的程式碼
  5. Function RegExGet(aString As String) As Variant
     Dim regEx As New RegExp
     Dim newArray() As String
     Dim x As Integer
     Dim y As Integer

     regEx.Pattern = "[a-zA-Z0-9_]+@[a-zA-Z0-9\._]+" // 電子郵件的Regular Expressions
     regEx.IgnoreCase = True
     regEx.Global = True
     Set matches = regEx.Execute(aString)
     x = matches.Count

     ReDim newArray(x - 1) As String
     Count = 0

     For Each Match In matches
        newArray(cnt) = Match.Value
        cnt = cnt + 1
     Next

     RegExGet = newArray()

    End Function
    程式碼出處:UDF8: RegExGet - return matches of regular expressions in excel (excel VBA)

  6. A欄是電子郵件本文,B欄則是我們要的資料,例如在B2欄中輸入=RegExGet(A2),就可以篩選出email address

lua安裝錯誤訊息解決方法

錯誤訊息:
lua.c:67:31: error: readline/readline.h: No such file or directory
lua.c:68:30: error: readline/history.h: No such file or directory

#yum install -y readline-devel ncurses-devel

VMware-自訂網段工具(vmnetcfg.exe)

vmnetcfg.exe 這個可以指定網段和網路型態的小工具在 VMware Player 3 以後就被拿掉了,安裝時不會附在裡面。

目前可以知道的是在 VMware Workstation 內是附有這個小工具的,因此解決方案的方法就是下載 VMware Workstation,從裡面把這個小工具拿出來。

假設下載的檔案是 VMware-workstation-full-9.0.exe
在命令提示字元下以下指令
VMware-workstation-full-9.0.exe /e .\exarctfloder_name

/e:解壓縮
.\exarctfloder_name:解壓縮的目錄名稱

在目錄底下會有一個 core.cab 的檔案,使用一般解壓縮軟體查看就會發現有 vmnetcfg.exe。
將他複製到 VMware Player 目錄內,就可以指定網段的範圍了。