fix pop3 fetching, limit recv to N bytes
parent
6b04a324f3
commit
7d372adb78
|
|
@ -20,6 +20,7 @@ func main() {
|
|||
as.Append(args.INT, "n", "limit (<1 for inf)", 10)
|
||||
as.Append(args.STRING, "u", "username", emailer.From)
|
||||
as.Append(args.STRING, "p", "password", emailer.Password)
|
||||
as.Append(args.INT, "b", "dont read more than this many characters", 4096)
|
||||
if err := as.Parse(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
|
@ -42,17 +43,17 @@ func main() {
|
|||
panic(err)
|
||||
}
|
||||
for msg := range msgs {
|
||||
b, _ := ioutil.ReadAll(io.LimitReader(msg.Body, 1024))
|
||||
s := strings.ReplaceAll(string(b), "\r\n", " ")
|
||||
s = strings.ReplaceAll(string(s), "\n", " ")
|
||||
s = strings.ReplaceAll(string(s), "\r", " ")
|
||||
b, _ := ioutil.ReadAll(io.LimitReader(msg.Body, int64(as.GetInt("b"))))
|
||||
s := strings.ReplaceAll(string(b), "\r\n", "\n")
|
||||
s = strings.ReplaceAll(string(s), "\n", "\n")
|
||||
s = strings.ReplaceAll(string(s), "\r", "\n")
|
||||
if !strings.Contains(s, " ") {
|
||||
s = "..."
|
||||
}
|
||||
d, _ := msg.Header.Date()
|
||||
d = d.In(time.Local)
|
||||
fmt.Printf(
|
||||
"@%+v @%+v: %+v: %s\n",
|
||||
"@%+v @%+v: \n\t%+v: \n\t%s\n",
|
||||
d.Format("06-01-02T15:04Z07"),
|
||||
msg.Header.Get("From"),
|
||||
msg.Header.Get("Subject"),
|
||||
|
|
|
|||
25
email.go
25
email.go
|
|
@ -86,23 +86,29 @@ func (e *Emailer) ReadIMAP() (chan *mail.Message, error) {
|
|||
}
|
||||
|
||||
func (e *Emailer) ReadPOP3() (chan *mail.Message, error) {
|
||||
emails := []*mail.Message{}
|
||||
limit := e.Limit
|
||||
if limit < 1 {
|
||||
limit = 1000
|
||||
}
|
||||
emails := make(chan *mail.Message, limit)
|
||||
defer close(emails)
|
||||
|
||||
c, err := pop3.DialTLS(e.POP3)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer c.Rset()
|
||||
|
||||
if err := c.Auth(e.From, e.Password); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ids, _, err := c.ListAll()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for j, id := range ids {
|
||||
if e.Limit > 0 && len(ids)-1-j >= e.Limit {
|
||||
break
|
||||
}
|
||||
|
||||
for _, id := range ids {
|
||||
raw, err := c.Retr(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -111,10 +117,13 @@ func (e *Emailer) ReadPOP3() (chan *mail.Message, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
emails = append(emails, msg)
|
||||
select {
|
||||
case emails <- msg:
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
//return emails, nil //c.Quit()
|
||||
return emails, nil
|
||||
}
|
||||
|
||||
func (e *Emailer) Send(to, subj, msg string) error {
|
||||
|
|
|
|||
Loading…
Reference in New Issue