2015-04-11 4 views
1

Я использую Go on GAE. Одна из моих задач - отправить электронное письмо. Я успешно использую документацию this.Go Gae NewContext

Однако, что если я не хочу обработчика запроса:

func confirm(w http.ResponseWriter, r *http.Request) { 
     c := appengine.NewContext(r) 
        ... 

Но скорее, отправить электронную почту через локальную FUNC:

func confirm() { 
... 

Есть ли способ в Go, чтобы сделать это с GAE? Я думаю, что Im ищет способ позвонить:

c := appengine.NewContext(r) 

Но без обработчика запроса, или обойти его любым возможным способом (что чтение Im, вероятно, не возможно)

Я имею в виду работа вокруг могла бы сделать http request из моего приложения в мое приложение - но ничего себе это некрасиво!

resp, err := http.Get("http://localhost:8080/sendMail?to=...") 

ПРИМЕЧАНИЕ: После попытки это - уродливая работа вокруг я получаю: http.DefaultTransport и http.DefaultClient не доступны в App Engine. См https://cloud.google.com/appengine/docs/go/urlfetch/

Так что это временное решение, на самом деле не работа вокруг в том urlfetch, которая, как GAE использует http.GET еще раз ... требует c := appengine.NewContext(r)

ответ

2

вам нужно appengine.Context взаимодействовать с внешними службами, включая электронную почту и urlfetch. Вам нужно будет передать экземпляр контекста в вашу функцию confirm.

+0

Я боялся, что это был ответ. Есть ли способ передать ему что-то другое, кроме * http.Request? Или подделка * http.Request какого-то типа? Я пытаюсь НЕ использовать обработчик запроса, если это вообще возможно. Спасибо. – Chris

+0

Я не уверен, какова ваша цель, но приложение не запускает какой-либо код вообще без запроса, начиная с вашего экземпляра, поэтому, даже если бы вы могли это сделать, не было бы способа выполнить код. Какое именно требование вы пытаетесь решить? – Logiraptor

+0

Ohhhhhhhh +1. Я не знал этого, но он отвечает на мой вопрос! Большое спасибо за последующее резервное копирование – Chris