最新文章

頁: [1] 2 3 ... 10
1
Linux 討論版 / Re: 請問最簡單的webmail
« 最新文章 由 hoyo 2018-11-15 13:07 »
現在的工作是專職寫程式,就培養寫出 「大家都看得懂」的程式 (不是優美或是精簡)

因為看不懂維護起來很慘 .....
2
Linux 討論版 / Re: 請問最簡單的webmail
« 最新文章 由 dark 2018-11-15 12:35 »
感謝 hoyo 大的範例指點

兩位大大貼的 github 小弟之前試過都不行
早上用 hoyo 大的 , 仍然不行
由於 hoyo 大寫的簡單明瞭 , 於是照著模仿試寫
跳出了不支援 mailparse_msg_create 後
搞到剛剛才了解什麼是 php 擴充 ...

那兩個連結都有提到 pear 或 pecl
偏偏小弟就缺這麼重要的 php 常識  :'(

hoyo 大的程式已經可以 work 了
接下來細部的需求 , 小弟理當知道該怎麼做了
等寫完再貼上來請各位大大指點


3
Linux 討論版 / Re: 請問最簡單的webmail
« 最新文章 由 asako 2018-11-13 16:36 »
https://github.com/php-mime-mail-parser/php-mime-mail-parser 也許可用

目前流通的 PHP email parse 都有多多少少的問題,例如附件解析不出來或是該 base64 decode 卻沒有 decode

所以還是要自己拿 Mailparse  libary 自己寫遇到問題才比較容易解決

http://php.net/manual/en/book.mailparse.php



只是問題出在最開始說的,Gmail 流行了,自己搞 Mail Server 的人少了,所以相關資訊及文件相對就少了

我比較喜歡用別人的輪子,不合再改輪子
4


課程名稱: ARM智慧物聯網平台應用人才養成 

--------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------早點報名送ARM Cortex M系列+TFT LCD套件包,價值NT $7000-----------------

--------------------------------------------------------------------------------------------------------------------------------------------------------

課程重點:

課程著重在ARM單晶片即時作業系統與感測器物聯網技術整合,使用低功耗高性能ARM單晶片實作物聯網中的感知網路層,
搭配即時作業系統實現即時多工感測實體,打造屬於自己的智慧聯網家電。並強調業界實務為導向。
課程的階段性銜接脈絡清晰、循序漸進,使用技術講師群自行研發開發平台搭配多樣的周邊感測模組,
有助於學員在時程內完整吸收課程精華,快速踏入物聯網領域並擁有專業能力與就業競爭力,能夠立即投入智慧電子產業。

--------------------------------------------------------------------------------------------------------------------------------------------------------

課程大綱:

[1] C語言程式設計與資料結構

[2] 電子電路基礎

[3] 嵌入式應用軟體設計(Android應用程式開發)

[4] 嵌入式處理器實務開發(ARM Cortex-M0)

[5] 嵌入式處理器實務開發(ARM Cortex-M3/M4)

[6] 單晶片ARM Cortex-M3/M4模組應用實作練習

[7] ARM單晶片物聯網整合實作

[8] 嵌入式即時作業系統移植實作

[9] ARM藍牙物聯網通訊開發(ARM Bluetooth IOT communications development)

[10] 物聯網單晶片模組應用實作練習

[11] 求職技巧與就業輔導





參考網址:ttp://www.cadtc.com.tw/2017newarm/

上課講師親自撰寫授課教材
★歡迎參加免費說明會/40分鐘簡報說明/可來電預約02-2311-7355

|
--------------------------------------------------------------------------------------------------------------------------------------------------------
諮詢專線: 02-2311-7355
傳真專線: 02-2331-3591
服務地址:台北市中正區開封街一段2號9樓
         (近台北火車站新光三越站前店,館前路口/麥當勞隔壁大樓9樓)
營業時間:週一至週五 9:00~21:30   周六日9:00 ~ 17:30
服務信箱:grace@cadtc.com.tw
中華數位ETC嵌入式科技學院 www.cadtc.com.tw
----------------------------------------------------------------------------------
http://他們為什麼都選中華數位
 ● 中華數位技術分享區
 ● 中華數位-課程專題實作影片
 ● 中華數位-FB粉絲團
5


專業技術開發應用課程,在2018擁有最佳的職場競爭力!!!
一次學會兩套即時作業系統,與業界開發接軌

--------------------------------------------------------------------------------------------------------------------------------------------------------
【好康優惠!】報名全修課程再送開發板 機會難得 報名要快!
點這裡報名-->http://cadtc.com.tw/m4/arm_real_time.html
--------------------------------------------------------------------------------------------------------------------------------------------------------

課程名稱:ARM即時作業系統移植實作 



課程簡介
即時作業系統有別於一般作業系統,強調工作的即時性,常用於車用電子,飛航交通系統上,本課程使用目前業界最廣泛應用的ARM Cortex-M4單晶片核心,學習即時作業系統移植與開發應用,首創一次學會兩套即時作業系統,uC/OS-II 與FreeRTOS在業界應用上都佔有一席之地,透過本課程豐富的多工應用範例,學員們對即時作業系統在ARM平台上的使用會更加了解。

課程大綱
> ARM即時作業系統移植實作
1. Introduction to RTOS (即時作業系統介紹)
2. Porting uC/OS-II to ARM Cortex-Mx (移植uC/OS-II 到ARM Cortex-Mx平台)
3. uC/OS-II and it's Applications (uC/OS-II 應用範例)
4.Porting FreeRTOS to ARM Cortex-Mx (移植FreeRTOS到ARM Cortex-Mx平台)
5.FreeRTOS and it's Applications (FreeRTOS 應用範例)
6. Integrate RTOS (RTOS整合實務))


對課程內容有興趣、想進一步了解者,歡迎來電預約參加免費說明會
諮詢專線: 02-2311-7355
傳真專線: 02-2331-3591
服務地址:台北市中正區開封街一段2號9樓
              (近台北火車站新光三越站前店,館前路口/麥當勞隔壁大樓9樓)
營業時間:週一至週六 9:00~21:30   周日9:00 ~ 18:00
服務信箱:grace@cadtc.com.tw
中華數位ETC嵌入式科技學院 www.cadtc.com.tw

6
Linux 討論版 / Re: 請問最簡單的webmail
« 最新文章 由 hoyo 2018-11-13 09:52 »
https://github.com/php-mime-mail-parser/php-mime-mail-parser 也許可用

目前流通的 PHP email parse 都有多多少少的問題,例如附件解析不出來或是該 base64 decode 卻沒有 decode

所以還是要自己拿 Mailparse  libary 自己寫遇到問題才比較容易解決

http://php.net/manual/en/book.mailparse.php

只是問題出在最開始說的,Gmail 流行了,自己搞 Mail Server 的人少了,所以相關資訊及文件相對就少了
7
Linux 討論版 / Re: 請問最簡單的webmail
« 最新文章 由 hoyo 2018-11-13 09:48 »
代碼: [選擇]
<?php
ini_set
('display_errors',true);
ini_set('error_reporting',E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);

mb_internal_encoding('UTF-8');

const 
path '/var/spool/mail';

$userArray scandir(path);
$users =array();

foreach( 
$userArray as $k=>$user ){
    if ( 
$user !='.' && $user !='..' ){
        
$users[] = $user;
    }
}

// 選取了使用者信箱
if ( $_GET['a'] =='user' ) {

    
$mail = array();
    
$m '';

    
$f path .'/'$_POST['user'];
    
$handle = @fopen($f"r");
    
$mail $body = array();
    
$i = -1;
    if (
$handle) {
        
$header true;
        while ((
$line fgets($handle4096)) != false) {
            if ( 
preg_match('/^From /'$line) ){
                
$header true;
                ++
$i;
                
$mail[$i] .= $line;
            }
            else{
                if ( 
$header == true ) {
                    
$mail[$i] .= $line;
                }
                else{
                    
$body[$i] .= $line;
                }
            }

            if ( 
preg_match('/^\n$/'$line) ) {
                
$header false;
            }
        }
        
fclose($handle);
    }
    
    
// 讀取單一信件
    
$m = array();
    foreach( 
$mail as $k=>$v ){
        
// 將信件內容丟進 mailparse 進行解析
        
$mime mailparse_msg_create();
        
mailparse_msg_parse($mime$v);

        
// 讀取信件結構 -> header & body
        
$structure mailparse_msg_get_structure($mime);
        
$parts = array();
        foreach(
$structure as $part_id) {
            
$part mailparse_msg_get_part($mime$part_id);
            
$parts[$part_id] = mailparse_msg_get_part_data($part);

            
// 將信件結構存入陣列
            
$m[$k] = $parts[$part_id];
        }
        
//print_r($m);
    
}

    
$mail = array();
    foreach( 
$m as $k=>$v ){
        
$mail[$k]['subject'] = mb_decode_mimeheader($v['headers']['subject']);
    }

    if ( 
count($m) >=){
        
$Return = array( 'Result'=>true'Data'=>$mail );
    }
    else {
        
$Return = array( 'Result'=>false );
    }
    echo 
json_encode($Return);
    exit;
}

//
if ( $_GET['a'] =='mail' ) {
    
$mail = array();
    
$m '';

    
$f path .'/'$_POST['user'];
    
$handle = @fopen($f"r");
    
$mail $body = array();
    
$i = -1;
    if (
$handle) {
        
$header true;
        while ((
$line fgets($handle4096)) != false) {
            if ( 
preg_match('/^From /'$line) ){
                
$header true;
                ++
$i;
                
$mail[$i] .= $line;
            }
            else{
                if ( 
$header == true ) {
                    
$mail[$i] .= $line;
                }
                else{
                    
$body[$i] .= $line;
                }
            }

            if ( 
preg_match('/^\n$/'$line) ) {
                
$header false;
            }
        }
        
fclose($handle);
    }
    
    if ( 
count($m) >=){
        
$Return = array( 'Result'=>true'Data'=>$body[$_POST['mail']] );
    }
    else {
        
$Return = array( 'Result'=>false );
    }
    echo 
json_encode($Return);
    exit;
}
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"/>
    <title></title>
    <style>
        *{
            font-size: 16px;
        }
        pre{
            background-color: #eee;
            border: 1px solid #aaa;
            border-radius: 8px;
            padding: 16px;
            margin: 16px;
        }
        .box{
            margin: 16px;
            padding: 16px;
            border-radius: 8px;
            border: 1px solid #ddd;
        }
    </style>
</head>
<body>

<div class="box">
    <label>選擇使用者帳號:
        <select name="user" onchange="selectUser(this)">
            <option value="">- 選擇信箱 -</option>
            <?php foreach($users as $k=>$v){ ?>
                <option value="<?php echo $v;?>"><?php echo $v;?></option>
            <?php ?>
        </select>
    </label>
</div>

<?php echo $_POST['user'];?>

<div class="box">
    <label>選取信件:
        <select name="mail" onchange="readMail(this)"></select>
    </label>
</div>

<div>信件內容:</div>
<pre id="MailBody"></pre>

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
    var user = '';

    function selectUser(obj){
        var $this = $(obj);
        user = $this.val();

        $.ajax({
            url: '?a=user',
            type: 'post',
            data: {
                user: $this.val()
            },
            dataType: 'json',
            success: function(json){

                var h = '<option value="">- 選擇信件 -</option>';
                if ( json['Result'] ==true ){
                    $.each( json['Data'], function(k,v){
                        h += '<option value="'+ k +'">'+ v['subject'] +'</option>';
                    } );
                }

                $('[name="mail"]').html(h);
            }
        });
    }

    function readMail(obj){
        var $this = $(obj);

        $.ajax({
            url: '?a=mail',
            type: 'post',
            data: {
                user: user,
                mail: $('[name="mail"]').val()
            },
            dataType: 'json',
            success: function(json){

                var h = '';
                if ( json['Result'] ==true ){
                    h += json['Data'];
                }

                $('#MailBody').html(h);
            }
        });
    }
</script>
</body>
</html>

獻上 hoyo 版本, MIME 格式郵件還沒繼續處理,需要的人把 mail 區段 $body 繼續解析即可
9
Linux 討論版 / Re: 請問最簡單的webmail
« 最新文章 由 dark 2018-11-10 13:55 »
切開 mail 雖然看了 formail 指令可以用
但還是沒有切
大多使用 bash 指令即可完成抓出指定信件跟刪除信件

目前如附件 ..
將信件複製到 index.php 旁邊的 mailboxs 資料夾就能看

讀信只轉一次 mime , 看來還須看看是否有較完整套件能用

抓信部分算是差不多了 , 剛剛發現一個 bug
mailbox 信件太少時 , 移到最後一封 , 算出不出數量超過還 ajax

先休息一下 , 小睡後再來看了 ... 看來真的老了


不過有個問題 ..
裡面有個 php function maillistformat()
若將陣列傳入 , 陣列中的中文都會變問號
百思不得其解 , 只好搬出來重複貼上執行
10
Linux 討論版 / Re: 請問最簡單的webmail
« 最新文章 由 hoyo 2018-11-09 18:00 »
不過 maildir 對於程式的記憶體處理並沒有帶來優勢,還是需要把所有的檔案讀入才可以進行解析

解析後才可以讀出信件主旨,如此才可正確選到想讀取的信件
頁: [1] 2 3 ... 10